@plurnk/plurnk-agui 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,14 +11,14 @@ Vendor-agnostic, MIT.
11
11
  An **in-process module** of the daemon, not an external service: the daemon activates it
12
12
  at boot (`daemon.registerModule(Module.init(opts))`), handing it the curated core seam
13
13
  (event source, loop-control, op dispatch, journal/metadata reads, proposal HITL,
14
- session lifecycle — plurnk-service#355). The module opens its own HTTP/SSE listener and
15
- owns the transport+security line at that edge: bearer auth, per-session authorization,
14
+ workspace lifecycle — plurnk-service#355). The module opens its own HTTP/SSE listener and
15
+ owns the transport+security line at that edge: bearer auth, per-workspace authorization,
16
16
  input validation. Below the seam: plurnk terms (loop/turn/proposal). Above: AG-UI terms
17
17
  (run/message/tool-call/state). This module is the translation.
18
18
 
19
19
  ## The interface (AG-UI+)
20
20
 
21
- One endpoint: `POST /` with `RunAgentInput` (`threadId`, `runId`, `messages`,
21
+ One endpoint: `POST /` with `RunAgentInput` (`threadId`, `workerId`, `messages`,
22
22
  `forwardedProps`) → `text/event-stream` of AG-UI events.
23
23
 
24
24
  - **Runs**: turns are `STEP_*`; PLAN is `THINKING_TEXT_MESSAGE_*`; SEND bodies are
@@ -26,19 +26,19 @@ One endpoint: `POST /` with `RunAgentInput` (`threadId`, `runId`, `messages`,
26
26
  Numbers pass through verbatim (`contextSize` = the daemon's effective prompt budget).
27
27
  - **HITL, terminate-resume**: a stopped-world proposal (file edit, exec, MCP auth) emits
28
28
  a `request_approval` tool-call — a `SEND[300]` operator question emits
29
- `request_user_input` — and the run **finishes** while the loop stays paused in-engine.
30
- The next run's tool-result message (`toolCallId: "prop:<id>"`, content
29
+ `request_user_input` — and the worker **finishes** while the loop stays paused in-engine.
30
+ The next worker's tool-result message (`toolCallId: "prop:<id>"`, content
31
31
  `{decision: accept|reject|cancel, body?}`) resolves it; the continued loop streams there.
32
32
  Pending proposals re-surface on (re)connect — a days-old question is discoverable.
33
- - **Reads ride STATE**: providers/aliases/budget/session arrive as `STATE_SNAPSHOT` on
33
+ - **Reads ride STATE**: providers/aliases/budget/workspace arrive as `STATE_SNAPSHOT` on
34
34
  `RUN_STARTED` and `STATE_DELTA` on change — observed, not polled.
35
- - **The session is the WORLD**: `forwardedProps.plurnk.session` selects the workspace by
36
- name, verbatim (attach-or-create). It is REQUIRED — a run has no existence without a world,
37
- so its absence is rejected (500), never forged from the `threadId`. Session options ride the workspace's first run:
38
- `forwardedProps.plurnk` (`projectRoot`, `constraints`, `settings`); per-run knobs
39
- (`maxTurns`, `flags`, `alias`/`model`) every run.
40
- - **The thread is the CONVERSATION**: a `threadId` binds a run over the selected world —
41
- today the session's model run (`ensureModelRun`), so extended context persists across runs;
35
+ - **The workspace is the WORLD**: `forwardedProps.plurnk.workspace` selects the workspace by
36
+ name, verbatim (attach-or-create). It is REQUIRED — a worker has no existence without a world,
37
+ so its absence is rejected (500), never forged from the `threadId`. Workspace options ride the workspace's first run:
38
+ `forwardedProps.plurnk` (`projectRoot`, `constraints`, `settings`); per-worker knobs
39
+ (`maxTurns`, `flags`, `alias`/`model`) every worker.
40
+ - **The thread is the CONVERSATION**: a `threadId` binds a worker over the selected world —
41
+ today the workspace's model worker (`ensureModelWorker`), so extended context persists across runs;
42
42
  history replays as `MESSAGES_SNAPSHOT` on reattach. Distinct second conversations over one
43
43
  world gate on plurnk-service#366. (Machine model: service SPEC §machine-processes.)
44
44
  - **Cancel**: dropping the SSE aborts a live loop (hangup is the abort); a
package/SPEC.md CHANGED
@@ -11,20 +11,20 @@ through, never recomputed. Every `{§}` anchor below is cited by a `[§]` test.
11
11
  at boot (`registerModule` → the core seam handle); it opens the AG-UI+ listener and owns
12
12
  the client interface. No WebSocket, no separate process.
13
13
  - **A plurnk SESSION is the world; an AG-UI THREAD is a conversation over it** {§agui-thread-is-run}
14
- — plurnk's machine model (service SPEC §machine-processes) splits the WORLD (a session: one
15
- curated workspace) from the CONVERSATION (a run: a history over that world). AG-UI's session
16
- concept is the workspace, selected by name, VERBATIM, via `forwardedProps.plurnk.session`
14
+ — plurnk's machine model (service SPEC §machine-processes) splits the WORLD (a workspace: one
15
+ curated workspace) from the CONVERSATION (a worker: a history over that world). AG-UI's workspace
16
+ concept is the workspace, selected by name, VERBATIM, via `forwardedProps.plurnk.workspace`
17
17
  (attach if it exists, create with exactly that name otherwise — no prefix, no forging). The
18
- session is REQUIRED: a run has no existence without a world, so its absence is a contract
18
+ workspace is REQUIRED: a worker has no existence without a world, so its absence is a contract
19
19
  violation the module rejects (500) — never a workspace forged from the `threadId`. The
20
20
  `threadId` is the conversation — a RUN over that world, and the name is the identity at
21
- BOTH levels: `threadId` == the session name binds the session's MODEL run (the default
22
- conversation, `ensureModelRun` — origin identifies it, never a name parse); a DISTINCT
23
- `threadId` names its own conversation run — found by name if it exists (forks and prior
24
- conversations are addressable as threads), minted via `createConversationRun` (svc#366)
21
+ BOTH levels: `threadId` == the workspace name binds the workspace's MODEL run (the default
22
+ conversation, `ensureModelWorker` — origin identifies it, never a name parse); a DISTINCT
23
+ `threadId` names its own conversation worker — found by name if it exists (forks and prior
24
+ conversations are addressable as threads), minted via `createConversationWorker` (svc#366)
25
25
  if it doesn't. World-scoped actions (`loop.inject`, `loop.cancel`, `log.read` default,
26
- `run.fork`) operate on the THREAD's conversation, never blindly on the model run.
27
- Extended context persists across AG-UI runs because the run's log does.
26
+ `run.fork`) operate on the THREAD's conversation, never blindly on the model worker.
27
+ Extended context persists across AG-UI runs because the worker's log does.
28
28
  - **Family-internal runtime deps only** {§agui-zero-dep} — `@plurnk/*` packages (the grammar,
29
29
  for edge parsing) are welcome, exact-pinned; third-party runtime deps (e.g. `@ag-ui/core`
30
30
  with its Zod) stay out. Event shapes remain hand-defined plain JSON.
@@ -40,21 +40,38 @@ One daemon notification in, zero-or-more AG-UI events out (`Translator`, pure):
40
40
  |---|---|
41
41
  | `loop.run` accepted | `RUN_STARTED` |
42
42
  | `log/entry` turn boundary | `STEP_FINISHED` + `STEP_STARTED` (`turn-<id>`) |
43
- | `log/entry` op=PLAN (model) | `THINKING_TEXT_MESSAGE_START/CONTENT/END` |
43
+ | `log/entry` op=PLAN (model) | `REASONING_START` + `REASONING_MESSAGE_START/CONTENT/END` + `REASONING_END` (§475: current AG-UI reasoning; the deprecated THINKING_* is retired) |
44
44
  | `log/entry` op=SEND (model) | `TEXT_MESSAGE_START/CONTENT/END` + `CUSTOM plurnk.send` (signal/status) |
45
45
  | `log/entry` other op (model) | `TOOL_CALL_START/ARGS/END` (+ `TOOL_CALL_RESULT` when rx exists) |
46
- | `log/entry` op=model (mirror) | nothing — forensic, not speech |
46
+ | `log/entry` op=model (mirror) | a correlated `REASONING_START` / `REASONING_ENCRYPTED_VALUE`* / `REASONING_END` span when the reasoning-item `attrs.reasoning` is present (see §agui-sealed-reasoning); otherwise nothing — forensic |
47
47
  | `log/entry` origin≠model | `CUSTOM plurnk.ambient` (foists, deltas, narrations) |
48
48
  | `loop/proposal` | `CUSTOM plurnk.proposal` |
49
- | `loop/terminated` | `STATE_DELTA` (budget) + `CUSTOM plurnk.terminated` (sessionId, loopId, turnIds, costPico, meta) + `RUN_FINISHED` (200) or `RUN_ERROR` (else) |
49
+ | `loop/terminated` | `STATE_DELTA` (budget) + `CUSTOM plurnk.terminated` + `RAW` (the provider's native completion frame, `source: provider`, §475) + `RUN_FINISHED` (200) or `RUN_ERROR` (else) |
50
50
  | `telemetry/event` | `CUSTOM plurnk.telemetry` |
51
- | `stream/event` + `stream/concluded` | `CUSTOM plurnk.stream` (payload self-discriminates: event carries `state`, concluded `closeStatus`) |
51
+ | `stream/event` + `stream/concluded` | `CUSTOM plurnk.stream` + `ACTIVITY_SNAPSHOT` (the standard background-activity channel: `activityType` = the scheme, replace-snapshot, §475) |
52
52
  | `loop/quiesced` | `CUSTOM plurnk.quiesced` |
53
53
 
54
54
  - **An op row IS a tool call** — its `coordinate` is the `toolCallId`, its tx the args (one
55
55
  delta: a dispatched plurnk op is atomic), its rx the result. The log-shaped richness the
56
56
  core vocabulary can't hold (fold state, tags, tokens) stays on the row inside
57
57
  `plurnk.ambient`/`TOOL_CALL_RESULT` payloads.
58
+ - **Sealed reasoning: a hard interface to the standard** {§agui-sealed-reasoning} — reasoning
59
+ transmission is a SOLVED problem (OpenAI Responses / AG-UI reasoning-item; DIVERGENCES row 3 =
60
+ reasoning CONVERGED, with no exception for its representation), so agui consumes the standard
61
+ shape VERBATIM and does not translate a bespoke one. The REQUIRED seam contract: core surfaces
62
+ the model's reasoning as ONE addressable item on the model row's `attrs.reasoning` —
63
+ `{ id: string, subtype: "message" | "tool-call", encrypted?: [{ data, format }] }` — where `id`
64
+ is the reasoning entity's identity (the SAME id its open reasoning carries, so open text and
65
+ sealed value are two faces of one entity, per the Responses model). agui projects
66
+ `REASONING_ENCRYPTED_VALUE` (@ag-ui/core shape: `subtype`/`entityId`/`encryptedValue`, never
67
+ `messageId`/`value`) with `entityId` = the item `id`, correlated to a `REASONING_START/END` span
68
+ keyed by that same `id`. `format` has no AG-UI slot; it rides `plurnk.row` losslessly.
69
+ - **Deliberately broken until core delivers the shape** — the interface fails CLOSED: any row
70
+ lacking a well-formed reasoning-item (including the pre-convergence `{ reasoningEncrypted:
71
+ [{ data, format }] }` carrier, which has no `id`/`subtype`) projects NOTHING. agui never
72
+ synthesizes an id or guesses a subtype to manufacture a schema-valid event. The gap is the
73
+ forcing function: `REASONING_ENCRYPTED_VALUE` is unserved until the seam carries the reasoning-
74
+ item, and closing it is core's convergence obligation (#482), not agui's to translate around.
58
75
  - **The custom namespace** {§agui-custom-namespace} — everything plurnk-specific rides
59
76
  `CUSTOM` events named `plurnk.*` (`plurnk.send`, `plurnk.ambient`, `plurnk.proposal`,
60
77
  `plurnk.telemetry`, `plurnk.stream`, `plurnk.quiesced`, `plurnk.terminated` — the full loop
@@ -73,11 +90,11 @@ One daemon notification in, zero-or-more AG-UI events out (`Translator`, pure):
73
90
  - **The gauge starts true** — `RUN_STARTED` is followed by a `STATE_SNAPSHOT` carrying the
74
91
  daemon's `providers.list` truth (the effective prompt budget, the active model), then
75
92
  `STATE_DELTA`s. A dropped SSE stream cancels the loop (`loop.cancel`) — the frontend hanging
76
- up IS the abort signal; no run is orphaned unwatched.
93
+ up IS the abort signal; no worker is orphaned unwatched.
77
94
 
78
95
  - **Reattach replays** {§agui-replay} — a rediscovered thread (the bridge restarted, a second
79
- frontend arrived) attaches to its existing session by name→id and opens ORIENTED: the model
80
- run's SENDs replay as `MESSAGES_SNAPSHOT` (the conversation spine; everything else stays
96
+ frontend arrived) attaches to its existing workspace by name→id and opens ORIENTED: the model
97
+ worker's SENDs replay as `MESSAGES_SNAPSHOT` (the conversation spine; everything else stays
81
98
  reachable via live `plurnk.row`), and every pending stop-the-world proposal re-surfaces
82
99
  immediately via the daemon's `proposal.list` — the indefinite-wait ruling's client half: a
83
100
  days-old question is discoverable, never a mystery hang.
@@ -90,26 +107,44 @@ surfaces as `CUSTOM plurnk.proposal` carrying `{logEntryId, op, target, body, at
90
107
  `POST /resolve {threadId, logEntryId, decision, body?}` — a passthrough to the daemon's
91
108
  `loop.resolve`, where an accept `body` is the answer. The SSE stream stays open while the
92
109
  world is stopped — **indefinitely by default** (service ruling: a stopped world waits for its
93
- human; the timeout is operator opt-in) — and the run resumes on resolution.
110
+ human; the timeout is operator opt-in) — and the worker resumes on resolution.
94
111
 
95
112
  ## The action surface {§agui-management-plane}
96
113
 
97
114
  A verb is a §3 action run: `forwardedProps.plurnk.action = {kind, …params}` in, one
98
115
  `CUSTOM plurnk.action.result` (`{kind, ok, result|error}`) out, `RUN_FINISHED`. There is
99
- no side-channel RPC endpoint; the run envelope is the whole interface. Unknown kinds
116
+ no side-channel RPC endpoint; the worker envelope is the whole interface. Unknown kinds
100
117
  error honestly (`ok:false`). `loop.inject` rides this surface; its steered effect
101
- streams on the original run's open SSE. `loop.cancel` is its counterpart — it aborts
102
- the model run's active drain (the addressable spelling of the SSE-hangup abort; both
118
+ streams on the original worker's open SSE. `loop.cancel` is its counterpart — it aborts
119
+ the model worker's active drain (the addressable spelling of the SSE-hangup abort; both
103
120
  clients' stop controls ride it).
104
121
 
105
122
  ## Topology scope {§agui-topology-scope}
106
123
 
107
- The session broadcast carries EVERY run's rows (workers, the plurnk run, siblings);
108
- only the thread's model run projects onto the core vocabulary. Foreign-run rows ride
124
+ The workspace broadcast carries EVERY worker's rows (workers, the plurnk worker, siblings);
125
+ only the thread's model worker projects onto the core vocabulary. Foreign-run rows ride
109
126
  `plurnk.row`/`plurnk.ambient` — visible to rich clients as topology, never interleaved
110
127
  into the conversation a generic frontend renders.
111
128
 
112
- ## The run endpoint {§agui-run-endpoint}
129
+ ## Broadcast fan {§agui-broadcast-fan}
130
+
131
+ One workspace fans EVERY event to ALL its open runs — the WS-wire semantics preserved:
132
+ each concurrent SSE is an independent subscriber with its own render router. This is a
133
+ broadcast, never a single "current" binding: a resumed exec's output, a loop's rows, and a
134
+ proposal's TOOL_CALL triple all reach every open run of the workspace. Two consequences the
135
+ module OWNS and a client MUST handle:
136
+
137
+ - **Multiplicity.** A proposal-paused action's result and a workspace stream event arrive
138
+ on every open run — so a client with N concurrent runs sees N copies. Clients demux/dedupe
139
+ by `logEntryId` (proposals) and by run identity (results). A client that funnels all runs
140
+ through one shared handler (e.g. a single dispatch) must SERIALIZE its management runs —
141
+ one action in flight, the rest queued — or a background action's stream steals the shared
142
+ slot. Both first-party clients do exactly this (nvim's management lane, svc#504).
143
+ - **No silent drop.** The fan never routes to a lone last-binder — a regression to that
144
+ shape is what svc#504 reported (a client-side single-slot handler, since fixed) and is
145
+ pinned against here.
146
+
147
+ ## The worker endpoint {§agui-run-endpoint}
113
148
 
114
149
  `POST /` (or `/agui`) with an AG-UI `RunAgentInput` body: the last `user` message becomes the
115
150
  `loop.run` prompt (`maxTurns`/`flags.yolo` from env); the response is `text/event-stream`,
@@ -19,15 +19,15 @@ export interface AguiPlusState {
19
19
  alias: string;
20
20
  model: string;
21
21
  active: boolean;
22
- contextSize: number | null;
22
+ promptBudget: number | null;
23
23
  }>;
24
- session?: {
24
+ workspace?: {
25
25
  id: number;
26
26
  name: string;
27
27
  projectRoot?: string | null;
28
28
  budget?: number | null;
29
29
  };
30
- sessions?: Array<{
30
+ workspaces?: Array<{
31
31
  id: number;
32
32
  name: string;
33
33
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"AguiPlus.d.ts","sourceRoot":"","sources":["../src/AguiPlus.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKlE,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,MAA8B,CAAC;AACvF,eAAO,MAAM,wBAAwB,eAAgB,MAAM,KAAG,MAAM,GAAG,IAGtE,CAAC;AAOF,eAAO,MAAM,gBAAgB,OAAQ,MAAM,KAAG,MAAqE,CAAC;AAIpH,eAAO,MAAM,gBAAgB,MAAO,oBAAoB,KAAG,SAAS,EAOnE,CAAC;AAKF,MAAM,WAAW,iBAAiB;IAAG,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3F,MAAM,WAAW,UAAU;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3G,eAAO,MAAM,wBAAwB,MAAO,iBAAiB,KAAG,UAAU,GAAG,IAiB5E,CAAC;AAIF,MAAM,WAAW,aAAa;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjG,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC5F,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AACD,eAAO,MAAM,aAAa,MAAO,aAAa,KAAG,SAAkE,CAAC;AACpH,eAAO,MAAM,UAAU,YAAa,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KAAG,SAAsD,CAAC;AASlJ,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AAChF,eAAO,MAAM,WAAW,mBAAoB,OAAO,KAAG,aAAa,GAAG,IAOrE,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1F,eAAO,MAAM,YAAY,SAAU,MAAM,WAAW,aAAa,KAAG,SACe,CAAC"}
1
+ {"version":3,"file":"AguiPlus.d.ts","sourceRoot":"","sources":["../src/AguiPlus.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKlE,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,MAA8B,CAAC;AACvF,eAAO,MAAM,wBAAwB,eAAgB,MAAM,KAAG,MAAM,GAAG,IAGtE,CAAC;AAOF,eAAO,MAAM,gBAAgB,OAAQ,MAAM,KAAG,MAAqE,CAAC;AAIpH,eAAO,MAAM,gBAAgB,MAAO,oBAAoB,KAAG,SAAS,EAOnE,CAAC;AAKF,MAAM,WAAW,iBAAiB;IAAG,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3F,MAAM,WAAW,UAAU;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3G,eAAO,MAAM,wBAAwB,MAAO,iBAAiB,KAAG,UAAU,GAAG,IAiB5E,CAAC;AAIF,MAAM,WAAW,aAAa;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAClG,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9F,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AACD,eAAO,MAAM,aAAa,MAAO,aAAa,KAAG,SAAkE,CAAC;AACpH,eAAO,MAAM,UAAU,YAAa,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KAAG,SAAsD,CAAC;AASlJ,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AAChF,eAAO,MAAM,WAAW,mBAAoB,OAAO,KAAG,aAAa,GAAG,IAOrE,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1F,eAAO,MAAM,YAAY,SAAU,MAAM,WAAW,aAAa,KAAG,SACe,CAAC"}
package/dist/AguiPlus.js CHANGED
@@ -6,7 +6,7 @@
6
6
  // §1 proposals/[300] questions → tool-calls (terminate-resume HITL); §2 reads →
7
7
  // shared STATE. This is the flagship choreography de-risked as logic before code.
8
8
  // ── §1 — stop-the-world → tool-call ──────────────────────────────────
9
- // toolCallId correlates the TERMINATING run's TOOL_CALL with the RESUME run's
9
+ // toolCallId correlates the TERMINATING worker's TOOL_CALL with the RESUME worker's
10
10
  // tool-result → the exact pending proposal. Encodes the logEntryId: `prop:<id>`.
11
11
  export const proposalToolCallId = (logEntryId) => `prop:${logEntryId}`;
12
12
  export const logEntryIdFromToolCallId = (toolCallId) => {
@@ -19,7 +19,7 @@ export const logEntryIdFromToolCallId = (toolCallId) => {
19
19
  // The plurnk correlation rides the opaque toolCallId (`prop:<logEntryId>`), so the
20
20
  // generic names carry no plurnk vocabulary upward.
21
21
  export const proposalToolName = (op) => (op === "SEND" ? "request_user_input" : "request_approval");
22
- // The run's tail when it hits a pause: the tool-call, then the CALLER emits
22
+ // The worker's tail when it hits a pause: the tool-call, then the CALLER emits
23
23
  // RUN_FINISHED to terminate. The loop stays paused in-engine — untouched.
24
24
  export const proposalToolCall = (p) => {
25
25
  const toolCallId = proposalToolCallId(p.logEntryId);
@@ -1 +1 @@
1
- {"version":3,"file":"AguiPlus.js","sourceRoot":"","sources":["../src/AguiPlus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AguiPlus.js","sourceRoot":"","sources":["../src/AguiPlus.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export interface ProposalResolution {
6
6
  }
7
7
  export interface PendingProposal {
8
8
  logEntryId: number;
9
- runId: number;
9
+ workerId: number;
10
10
  loopId: number;
11
11
  turnId: number;
12
12
  op: string;
@@ -20,13 +20,13 @@ import type { PlurnkStatement } from "@plurnk/plurnk-grammar";
20
20
  export type { PlurnkStatement };
21
21
  export type LogEntryWire = Record<string, unknown>;
22
22
  export interface DaemonSeam {
23
- subscribeToEvents(handler: (sessionId: number | null, method: string, params: unknown) => void): () => void;
24
- pendingProposals(sessionId: number): Promise<PendingProposal[]>;
23
+ subscribeToEvents(handler: (workspaceId: number | null, method: string, params: unknown) => void): () => void;
24
+ pendingProposals(workspaceId: number): Promise<PendingProposal[]>;
25
25
  resolveProposal(logEntryId: number, resolution: ProposalResolution): void;
26
- ensureModelRun(sessionId: number): Promise<number>;
26
+ ensureModelWorker(workspaceId: number): Promise<number>;
27
27
  runLoop(args: {
28
- sessionId: number;
29
- runId: number;
28
+ workspaceId: number;
29
+ workerId: number;
30
30
  prompt: string;
31
31
  maxTurns?: number;
32
32
  flags?: {
@@ -40,18 +40,18 @@ export interface DaemonSeam {
40
40
  loopId: number;
41
41
  turnSeq?: number;
42
42
  }>;
43
- cancelDrain(runId: number, reason?: string): boolean;
43
+ cancelDrain(workerId: number, reason?: string): boolean;
44
44
  dispatchAsClient(args: {
45
- sessionId: number;
46
- runId: number;
45
+ workspaceId: number;
46
+ workerId: number;
47
47
  statement: PlurnkStatement;
48
48
  }): Promise<{
49
49
  status: number;
50
50
  [key: string]: unknown;
51
51
  }>;
52
52
  readLog(args: {
53
- sessionId: number;
54
- runId: number;
53
+ workspaceId: number;
54
+ workerId: number;
55
55
  loopId?: number;
56
56
  turnId?: number;
57
57
  sinceId?: number;
@@ -66,10 +66,10 @@ export interface DaemonSeam {
66
66
  provider: string;
67
67
  model: string;
68
68
  active: boolean;
69
- contextSize: number | null;
69
+ promptBudget: number | null;
70
70
  }>;
71
71
  };
72
- createSession(args: {
72
+ createWorkspace(args: {
73
73
  name?: string;
74
74
  projectRoot?: string | null;
75
75
  settings?: string;
@@ -78,40 +78,40 @@ export interface DaemonSeam {
78
78
  glob: string;
79
79
  }>;
80
80
  }): Promise<ClientEnvelope>;
81
- attachSession(args: {
82
- sessionId: number;
83
- runId?: number;
84
- runName?: string;
81
+ attachWorkspace(args: {
82
+ workspaceId: number;
83
+ workerId?: number;
84
+ workerName?: string;
85
85
  }): Promise<ClientEnvelope>;
86
- listSessions(): Promise<Array<{
86
+ listWorkspaces(): Promise<Array<{
87
87
  id: number;
88
88
  name: string;
89
89
  }>>;
90
- listRuns(sessionId: number): Promise<Array<{
90
+ listWorkers(workspaceId: number): Promise<Array<{
91
91
  id: number;
92
92
  name: string;
93
93
  }>>;
94
- listPrompts(sessionId: number, limit?: number): Promise<string[]>;
95
- renameSession(sessionId: number, name: string): Promise<{
94
+ listPrompts(workspaceId: number, limit?: number): Promise<string[]>;
95
+ renameWorkspace(workspaceId: number, name: string): Promise<{
96
96
  id: number;
97
97
  name: string;
98
98
  }>;
99
- constrain(sessionId: number, effect: string, glob: string): Promise<{
99
+ constrain(workspaceId: number, effect: string, glob: string): Promise<{
100
100
  effect: string;
101
101
  glob: string;
102
102
  }>;
103
- unconstrain(sessionId: number, effect: string, glob: string): Promise<{
103
+ unconstrain(workspaceId: number, effect: string, glob: string): Promise<{
104
104
  effect: string;
105
105
  glob: string;
106
106
  }>;
107
- listConstraints(sessionId: number): Promise<Array<{
107
+ listConstraints(workspaceId: number): Promise<Array<{
108
108
  effect: string;
109
109
  glob: string;
110
110
  }>> | Array<{
111
111
  effect: string;
112
112
  glob: string;
113
113
  }>;
114
- listMembers(sessionId: number): Promise<{
114
+ listMembers(workspaceId: number): Promise<{
115
115
  members: Array<{
116
116
  path: string;
117
117
  effect: string;
@@ -119,15 +119,15 @@ export interface DaemonSeam {
119
119
  hidden: string[];
120
120
  }>;
121
121
  look(args: {
122
- sessionId: number;
123
- runId: number;
122
+ workspaceId: number;
123
+ workerId: number;
124
124
  statement: PlurnkStatement;
125
125
  }): Promise<{
126
126
  status: number;
127
127
  [key: string]: unknown;
128
128
  }>;
129
129
  readEntry(args: {
130
- sessionId: number;
130
+ workspaceId: number;
131
131
  target: string;
132
132
  channel?: string;
133
133
  offset?: number;
@@ -135,30 +135,30 @@ export interface DaemonSeam {
135
135
  status: number;
136
136
  entry: unknown;
137
137
  }>;
138
- forkRun(args: {
139
- sessionId: number;
140
- runId: number;
138
+ forkWorker(args: {
139
+ workspaceId: number;
140
+ workerId: number;
141
141
  name?: string;
142
142
  }): Promise<{
143
- runId: number;
144
- runName: string | null;
145
- parentRunId: number;
143
+ workerId: number;
144
+ workerName: string | null;
145
+ parentWorkerId: number;
146
146
  }>;
147
- createConversationRun(args: {
148
- sessionId: number;
147
+ createConversationWorker(args: {
148
+ workspaceId: number;
149
149
  name?: string;
150
150
  }): Promise<{
151
- runId: number;
152
- runName: string;
151
+ workerId: number;
152
+ workerName: string;
153
153
  }>;
154
154
  }
155
155
  export interface ClientEnvelope {
156
- sessionId: number;
157
- sessionName: string;
156
+ workspaceId: number;
157
+ workspaceName: string;
158
158
  projectRoot: string | null;
159
- runId: number;
160
- runName: string;
161
- modelRunId: number | null;
159
+ workerId: number;
160
+ workerName: string;
161
+ modelWorkerId: number | null;
162
162
  clientLoopId: number | null;
163
163
  }
164
164
  //# sourceMappingURL=DaemonSeam.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DaemonSeam.d.ts","sourceRoot":"","sources":["../src/DaemonSeam.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DaemonSeam.d.ts","sourceRoot":"","sources":["../src/DaemonSeam.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  // My coupling to the daemon's in-process client-interface seam (service#355). The
2
2
  // module depends on THIS interface — the committed, tested contract — never the
3
3
  // Daemon class's guts. It grows as the service lands hooks (loop-control,
4
- // session/envelope, reads, fork, execs/auth, the boot plug-point); today it carries
4
+ // workspace/envelope, reads, fork, execs/auth, the boot plug-point); today it carries
5
5
  // what's published: the event source (B) and proposal read + resolve (C + A-resolve).
6
6
  export {};
7
7
  //# sourceMappingURL=DaemonSeam.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DaemonSeam.js","sourceRoot":"","sources":["../src/DaemonSeam.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,gFAAgF;AAChF,0EAA0E;AAC1E,oFAAoF;AACpF,sFAAsF"}
1
+ {"version":3,"file":"DaemonSeam.js","sourceRoot":"","sources":["../src/DaemonSeam.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,gFAAgF;AAChF,0EAA0E;AAC1E,sFAAsF;AACtF,sFAAsF"}
@@ -4,8 +4,8 @@ export default class EventRouter {
4
4
  constructor(args: {
5
5
  threadId: string;
6
6
  runId: string;
7
- modelRunId?: number | null;
8
- sessionId?: number | null;
7
+ modelWorkerId?: number | null;
8
+ workspaceId?: number | null;
9
9
  });
10
10
  runStarted(snapshot?: unknown): AguiEvent[];
11
11
  replay(entries: Array<Record<string, unknown>>): AguiEvent[];
@@ -1 +1 @@
1
- {"version":3,"file":"EventRouter.d.ts","sourceRoot":"","sources":["../src/EventRouter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAgD,MAAM,YAAY,CAAC;AAE1F,MAAM,CAAC,OAAO,OAAO,WAAW;;IAG5B,YAAY,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAE3G;IAED,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAAyC;IACpF,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,CAAoC;IAEhG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,CAUlD;CACJ"}
1
+ {"version":3,"file":"EventRouter.d.ts","sourceRoot":"","sources":["../src/EventRouter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAgD,MAAM,YAAY,CAAC;AAE1F,MAAM,CAAC,OAAO,OAAO,WAAW;;IAG5B,YAAY,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAEhH;IAED,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAAyC;IACpF,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,CAAoC;IAEhG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,CAiBlD;CAgBJ"}
@@ -1,4 +1,4 @@
1
- // The module's per-run render core (plurnk-agui#2). Routes a daemon event
1
+ // The module's per-worker render core (plurnk-agui#2). Routes a daemon event
2
2
  // (method, params) from the seam's event source → AG-UI events, composing the proven
3
3
  // projections: log/entry → core vocab, loop/terminated → RUN_FINISHED + budget STATE,
4
4
  // telemetry/stream → CUSTOM. Per-run state (turn tracking, model-run binding) lives in
@@ -18,10 +18,31 @@ export default class EventRouter {
18
18
  case "loop/terminated": return this.#t.terminated(params);
19
19
  case "telemetry/event": return this.#t.telemetry(params.event ?? params);
20
20
  case "stream/event":
21
- case "stream/concluded": return [{ type: "CUSTOM", name: "plurnk.stream", value: params }];
21
+ case "stream/concluded": return [
22
+ // Family channel (rich, full payload) AND the standard ACTIVITY channel (§475):
23
+ // an exec/search stream is 'in-progress activity between chat messages'. A
24
+ // replace-snapshot per event is the stateless conformant form — each carries the
25
+ // full current view; activityType is the stream's scheme (SEARCH/EXEC/…).
26
+ { type: "CUSTOM", name: "plurnk.stream", value: params },
27
+ EventRouter.#activity(params),
28
+ ];
22
29
  case "loop/proposal": return []; // ProposalHitl owns HITL (terminate-resume tool-call)
23
- default: return []; // session/created + anything unmodeled: the module handles out-of-band
30
+ default: return []; // workspace/created + anything unmodeled: the module handles out-of-band
24
31
  }
25
32
  }
33
+ // A stream event → the standard ACTIVITY snapshot. messageId = the stream's entry id
34
+ // (so a frontend keys deltas/updates to one activity); activityType = the scheme,
35
+ // uppercased (SEARCH, EXEC, …), the protocol's discriminator; content = the full
36
+ // payload; replace = true (each is the complete current view — stateless, conformant).
37
+ static #activity(params) {
38
+ const p = (params ?? {});
39
+ return {
40
+ type: "ACTIVITY_SNAPSHOT",
41
+ messageId: `stream-${p.entryId ?? 0}`,
42
+ activityType: typeof p.scheme === "string" && p.scheme.length > 0 ? p.scheme.toUpperCase() : "STREAM",
43
+ content: params,
44
+ replace: true,
45
+ };
46
+ }
26
47
  }
27
48
  //# sourceMappingURL=EventRouter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventRouter.js","sourceRoot":"","sources":["../src/EventRouter.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qFAAqF;AACrF,sFAAsF;AACtF,uFAAuF;AACvF,wFAAwF;AACxF,kFAAkF;AAElF,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAGzC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,EAAE,CAAa;IAEf,YAAY,IAAgG;QACxG,IAAI,CAAC,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,QAAkB,IAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,OAAuC,IAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhG,KAAK,CAAC,MAAc,EAAE,MAAe;QACjC,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAA8B,CAAC,CAAC;YAC1E,KAAK,iBAAiB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAgC,CAAC,CAAC;YACpF,KAAK,iBAAiB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAE,MAA8B,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;YAClG,KAAK,cAAc,CAAC;YACpB,KAAK,kBAAkB,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3F,KAAK,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,sDAAsD;YACvF,SAAS,OAAO,EAAE,CAAC,CAAC,uEAAuE;QAC/F,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"EventRouter.js","sourceRoot":"","sources":["../src/EventRouter.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,qFAAqF;AACrF,sFAAsF;AACtF,uFAAuF;AACvF,wFAAwF;AACxF,kFAAkF;AAElF,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAGzC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,EAAE,CAAa;IAEf,YAAY,IAAqG;QAC7G,IAAI,CAAC,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,QAAkB,IAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,OAAuC,IAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhG,KAAK,CAAC,MAAc,EAAE,MAAe;QACjC,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAA8B,CAAC,CAAC;YAC1E,KAAK,iBAAiB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAgC,CAAC,CAAC;YACpF,KAAK,iBAAiB,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAE,MAA8B,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;YAClG,KAAK,cAAc,CAAC;YACpB,KAAK,kBAAkB,EAAE,OAAO;gBAC5B,gFAAgF;gBAChF,2EAA2E;gBAC3E,iFAAiF;gBACjF,0EAA0E;gBAC1E,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE;gBACxD,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;aAChC,CAAC;YACF,KAAK,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,sDAAsD;YACvF,SAAS,OAAO,EAAE,CAAC,CAAC,yEAAyE;QACjG,CAAC;IACL,CAAC;IAED,qFAAqF;IACrF,kFAAkF;IAClF,iFAAiF;IACjF,uFAAuF;IACvF,MAAM,CAAC,SAAS,CAAC,MAAe;QAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAA0C,CAAC;QAClE,OAAO;YACH,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE;YACrC,YAAY,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ;YACrG,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,IAAI;SAChB,CAAC;IACN,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../src/Module.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAmC,MAAM,iBAAiB,CAAC;AAKnF,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;;IAkBvB,YAAY,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAKhD;IAGD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAMtE;IAEK,MAAM,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAMtD;IAED,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAIxC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CA4WJ"}
1
+ {"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../src/Module.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAmC,MAAM,iBAAiB,CAAC;AAKnF,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;;IAkBvB,YAAY,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAKhD;IAGD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAMtE;IAEK,MAAM,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAMtD;IAED,OAAO,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAIxC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CA+XJ"}