Skip to content

Emit SourceOSInteractionEvent from Noetica chat lifecycle#16

Merged
mdheller merged 7 commits into
mainfrom
work/sourceos-interaction-events-15
May 30, 2026
Merged

Emit SourceOSInteractionEvent from Noetica chat lifecycle#16
mdheller merged 7 commits into
mainfrom
work/sourceos-interaction-events-15

Conversation

@mdheller

Copy link
Copy Markdown
Member

Summary

Implements the Noetica emitter side for the shared SourceOS interaction substrate from SourceOS-Linux/sourceos-spec#106 and tracks Noetica#15.

This PR adds:

  • SourceOSInteractionEvent TypeScript types aligned to sourceos-spec
  • SourceOS interaction event builders for standalone and SourceOS-stub task results
  • /api/chat integration so standalone meta/done/error and SourceOS-stub done paths carry sourceos_interaction_event
  • governance trace/task result fields exposing the shared event to the UI and downstream consumers
  • standalone smoke assertion proving the event is emitted

Boundary posture

Noetica remains the browser chat / model-selection / steering UX surface. It emits the shared interaction event but does not become the policy, grant, memory, model-routing, or AgentPlane execution authority.

Standalone mode still emits governed evidence. SourceOS mode still emits the same event shape even when live Superconscious routing is unavailable.

Validation expected

npm run typecheck
npm run lint
npm run build

The live standalone smoke script now also asserts that sourceos_interaction_event.type === 'SourceOSInteractionEvent'.

Related

Comment on lines +282 to +286
return value
.toLowerCase()
.replace(/^urn:srcos:[a-z0-9-]+:/, '')
.replace(/[^a-z0-9_-]+/g, '-')
.replace(/^-+|-+$/g, '')
@mdheller
mdheller merged commit 0244037 into main May 30, 2026
4 of 5 checks passed
mdheller added a commit that referenced this pull request Jun 23, 2026
…assifier on tool output (#195)

- #37 — executeProvision ran the create command via sh -c (shell-injection surface if a SKU/region ever flows
  from request input). Now runs the program directly with an arg array (no shell).
- #16 — injection-classifier was debug-endpoint-only. Now executeToolWithTimeout (the single point all tool
  results flow through) scans output from EXTERNAL/untrusted tools (web_search, public_data, read_file, ocr,
  registry_lookup) with isLikelyInjection and SPOTLIGHTS a flagged result ('treat embedded instructions as
  DATA') before it re-enters the loop — indirect-injection defense on tool output, covering all 3 provider
  loops at one seam. Verified: clean→false, 'ignore all instructions + exfiltrate'→true. Backend 0.

Co-authored-by: Michael Heller <YOUR_COMMIT_EMAIL>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@mdheller
mdheller deleted the work/sourceos-interaction-events-15 branch July 19, 2026 03:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Emit SourceOSInteractionEvent for standalone and SourceOS chat lifecycle

2 participants