@nac3/forge-cli 1.0.50 → 1.0.51

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.
Files changed (63) hide show
  1. package/dist/chat/agent_scope.d.ts +41 -0
  2. package/dist/chat/agent_scope.d.ts.map +1 -0
  3. package/dist/chat/agent_scope.js +80 -0
  4. package/dist/chat/agent_scope.js.map +1 -0
  5. package/dist/chat/agent_session.d.ts +46 -0
  6. package/dist/chat/agent_session.d.ts.map +1 -0
  7. package/dist/chat/agent_session.js +169 -0
  8. package/dist/chat/agent_session.js.map +1 -0
  9. package/dist/chat/bridge.d.ts +8 -0
  10. package/dist/chat/bridge.d.ts.map +1 -1
  11. package/dist/chat/bridge.js +8 -3
  12. package/dist/chat/bridge.js.map +1 -1
  13. package/dist/chat/doctrine_digest.d.ts +6 -1
  14. package/dist/chat/doctrine_digest.d.ts.map +1 -1
  15. package/dist/chat/doctrine_digest.js +7 -2
  16. package/dist/chat/doctrine_digest.js.map +1 -1
  17. package/dist/chat/panel.d.ts.map +1 -1
  18. package/dist/chat/panel.js +104 -7
  19. package/dist/chat/panel.js.map +1 -1
  20. package/dist/chat/server.d.ts +20 -1
  21. package/dist/chat/server.d.ts.map +1 -1
  22. package/dist/chat/server.js +50 -7
  23. package/dist/chat/server.js.map +1 -1
  24. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
  25. package/dist/chat/tools/nac3_invoke.js +57 -1
  26. package/dist/chat/tools/nac3_invoke.js.map +1 -1
  27. package/dist/chat/tools/session_verbs.d.ts +39 -0
  28. package/dist/chat/tools/session_verbs.d.ts.map +1 -0
  29. package/dist/chat/tools/session_verbs.js +299 -0
  30. package/dist/chat/tools/session_verbs.js.map +1 -0
  31. package/dist/chat/tools.d.ts.map +1 -1
  32. package/dist/chat/tools.js +16 -0
  33. package/dist/chat/tools.js.map +1 -1
  34. package/dist/commands/chat.d.ts +14 -0
  35. package/dist/commands/chat.d.ts.map +1 -1
  36. package/dist/commands/chat.js +80 -1
  37. package/dist/commands/chat.js.map +1 -1
  38. package/dist/core/limits_config.d.ts +10 -0
  39. package/dist/core/limits_config.d.ts.map +1 -1
  40. package/dist/core/limits_config.js +9 -0
  41. package/dist/core/limits_config.js.map +1 -1
  42. package/dist/docs/doctrine/session-orchestration.md +86 -0
  43. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  44. package/dist/nac3/internal_manifest.js +103 -0
  45. package/dist/nac3/internal_manifest.js.map +1 -1
  46. package/dist/nac3/manifest_lazy.d.ts +5 -0
  47. package/dist/nac3/manifest_lazy.d.ts.map +1 -1
  48. package/dist/nac3/manifest_lazy.js +3 -3
  49. package/dist/nac3/manifest_lazy.js.map +1 -1
  50. package/dist/version.d.ts +1 -1
  51. package/dist/version.js +1 -1
  52. package/docs/doctrine/session-orchestration.md +86 -0
  53. package/package.json +1 -1
  54. package/src/i18n/catalogs/ar.json +1 -0
  55. package/src/i18n/catalogs/de.json +1 -0
  56. package/src/i18n/catalogs/en.json +1 -0
  57. package/src/i18n/catalogs/es.json +1 -0
  58. package/src/i18n/catalogs/fr.json +1 -0
  59. package/src/i18n/catalogs/hi.json +1 -0
  60. package/src/i18n/catalogs/it.json +1 -0
  61. package/src/i18n/catalogs/ja.json +1 -0
  62. package/src/i18n/catalogs/pt.json +1 -0
  63. package/src/i18n/catalogs/zh.json +1 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * agent_scope -- verb-scope gate for headless agent sub-sessions
3
+ * (Pablo 2026-06-28, yujin.session.*).
4
+ *
5
+ * A sub-session launched by yujin.session.spawn runs `yf chat --agent` with
6
+ * the env flag YF_AGENT_MODE=1. There is no panel and no human to approve an
7
+ * R8 modal, so the normal approval flow would simply STALL on any approval-
8
+ * gated verb. This gate replaces that stall with an explicit, bounded policy
9
+ * that matches the agreed child scope (decision #3):
10
+ *
11
+ * - read / search / query the project, graph, pending, reader -> pass
12
+ * - write files in the project root (write-project-file, mkdir) -> auto-approve
13
+ * - run a SAFE shell command -> auto-approve
14
+ * - run a NON-safe shell command -> reject
15
+ * - git push/commit, github.*, fs.move, project re-anchor,
16
+ * workflow/pending/keys mutation, spawning grandchildren,
17
+ * lifecycle servers, live-UI / MCP mutation -> reject
18
+ *
19
+ * The shell classification is done by the caller (nac3_invoke already imports
20
+ * the shell classifier), so this module returns 'classify_shell' for
21
+ * yujin.shell.exec and stays dependency-free.
22
+ *
23
+ * ASCII-only.
24
+ */
25
+ export type AgentGateAction = 'pass' | 'auto_approve' | 'reject' | 'classify_shell';
26
+ export interface AgentGateDecision {
27
+ action: AgentGateAction;
28
+ reason?: string;
29
+ }
30
+ /** True when this process is a headless agent sub-session. */
31
+ export declare function isAgentMode(): boolean;
32
+ /**
33
+ * Decide what a sub-session may do with a verb. `policy` is the verb's Nac3
34
+ * policy string. Returns:
35
+ * - 'reject' -> caller returns a denial envelope (do not dispatch)
36
+ * - 'auto_approve' -> caller skips the R8 modal and dispatches directly
37
+ * - 'classify_shell' -> caller classifies the shell command (safe -> approve)
38
+ * - 'pass' -> caller continues normally (unrestricted verbs run)
39
+ */
40
+ export declare function agentModeVerbGate(verbId: string, policy: string): AgentGateDecision;
41
+ //# sourceMappingURL=agent_scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_scope.d.ts","sourceRoot":"","sources":["../../src/chat/agent_scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAkCH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAYnF"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * agent_scope -- verb-scope gate for headless agent sub-sessions
3
+ * (Pablo 2026-06-28, yujin.session.*).
4
+ *
5
+ * A sub-session launched by yujin.session.spawn runs `yf chat --agent` with
6
+ * the env flag YF_AGENT_MODE=1. There is no panel and no human to approve an
7
+ * R8 modal, so the normal approval flow would simply STALL on any approval-
8
+ * gated verb. This gate replaces that stall with an explicit, bounded policy
9
+ * that matches the agreed child scope (decision #3):
10
+ *
11
+ * - read / search / query the project, graph, pending, reader -> pass
12
+ * - write files in the project root (write-project-file, mkdir) -> auto-approve
13
+ * - run a SAFE shell command -> auto-approve
14
+ * - run a NON-safe shell command -> reject
15
+ * - git push/commit, github.*, fs.move, project re-anchor,
16
+ * workflow/pending/keys mutation, spawning grandchildren,
17
+ * lifecycle servers, live-UI / MCP mutation -> reject
18
+ *
19
+ * The shell classification is done by the caller (nac3_invoke already imports
20
+ * the shell classifier), so this module returns 'classify_shell' for
21
+ * yujin.shell.exec and stays dependency-free.
22
+ *
23
+ * ASCII-only.
24
+ */
25
+ /** Approval policies that would otherwise open an R8 modal. */
26
+ const NEEDS_APPROVAL = new Set(['destructive', 'approval-required']);
27
+ /** Approval-gated verbs a sub-session MAY run autonomously within its project
28
+ * root. shell.exec is handled separately via the classifier. */
29
+ const CHILD_AUTO_APPROVE = new Set([
30
+ 'yujin.fs.write-project-file',
31
+ 'yujin.fs.mkdir',
32
+ ]);
33
+ /** Verbs ALWAYS blocked in a sub-session, regardless of policy: outward /
34
+ * irreversible actions, identity / registry / workflow mutation, project
35
+ * re-anchoring, spawning grandchildren, lifecycle servers, and live-UI / MCP
36
+ * mutation (a headless child has no panel to render those anyway). */
37
+ const CHILD_BLOCKED = new Set([
38
+ 'yujin.git.commit', 'yujin.git.push',
39
+ 'yujin.github.create-repo', 'yujin.github.clone-repo',
40
+ 'yujin.fs.move',
41
+ 'yujin.project.init', 'yujin.project.set-root',
42
+ 'yujin.keys.set',
43
+ 'yujin.design.override', 'yujin.design.select-variant',
44
+ 'yujin.workflow.set', 'yujin.workflow.run-step', 'yujin.workflow.log-step',
45
+ 'yujin.workflow.start', 'yujin.workflow.add-task', 'yujin.workflow.configure',
46
+ 'yujin.pending.add', 'yujin.pending.close', 'yujin.pending.edit', 'yujin.pending.discover',
47
+ 'yujin.session.spawn', 'yujin.session.stop',
48
+ 'yujin.lifecycle.run-app', 'yujin.lifecycle.stop-app', 'yujin.lifecycle.restart-app',
49
+ 'yujin.mcp.toggle', 'yujin.mcp.set-creds', 'yujin.mcp.invoke-tool',
50
+ 'yujin.mcp.block-endpoint', 'yujin.mcp.unblock-endpoint',
51
+ 'yujin.agent.delegate',
52
+ 'office.excel.write', 'office.excel.update-cell', 'office.excel.append-sheet', 'office.word.write',
53
+ ]);
54
+ /** True when this process is a headless agent sub-session. */
55
+ export function isAgentMode() {
56
+ return process.env.YF_AGENT_MODE === '1';
57
+ }
58
+ /**
59
+ * Decide what a sub-session may do with a verb. `policy` is the verb's Nac3
60
+ * policy string. Returns:
61
+ * - 'reject' -> caller returns a denial envelope (do not dispatch)
62
+ * - 'auto_approve' -> caller skips the R8 modal and dispatches directly
63
+ * - 'classify_shell' -> caller classifies the shell command (safe -> approve)
64
+ * - 'pass' -> caller continues normally (unrestricted verbs run)
65
+ */
66
+ export function agentModeVerbGate(verbId, policy) {
67
+ if (CHILD_BLOCKED.has(verbId)) {
68
+ return { action: 'reject', reason: 'verb "' + verbId + '" is not permitted inside an agent sub-session' };
69
+ }
70
+ if (verbId === 'yujin.shell.exec') {
71
+ return { action: 'classify_shell' };
72
+ }
73
+ if (NEEDS_APPROVAL.has(policy)) {
74
+ if (CHILD_AUTO_APPROVE.has(verbId))
75
+ return { action: 'auto_approve' };
76
+ return { action: 'reject', reason: 'approval-gated verb "' + verbId + '" needs a human approver, which a headless sub-session does not have' };
77
+ }
78
+ return { action: 'pass' };
79
+ }
80
+ //# sourceMappingURL=agent_scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_scope.js","sourceRoot":"","sources":["../../src/chat/agent_scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,+DAA+D;AAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAErE;iEACiE;AACjE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS;IACzC,6BAA6B;IAC7B,gBAAgB;CACjB,CAAC,CAAC;AAEH;;;uEAGuE;AACvE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;IACpC,kBAAkB,EAAE,gBAAgB;IACpC,0BAA0B,EAAE,yBAAyB;IACrD,eAAe;IACf,oBAAoB,EAAE,wBAAwB;IAC9C,gBAAgB;IAChB,uBAAuB,EAAE,6BAA6B;IACtD,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IAC1E,sBAAsB,EAAE,yBAAyB,EAAE,0BAA0B;IAC7E,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB;IAC1F,qBAAqB,EAAE,oBAAoB;IAC3C,yBAAyB,EAAE,0BAA0B,EAAE,6BAA6B;IACpF,kBAAkB,EAAE,qBAAqB,EAAE,uBAAuB;IAClE,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB;IACtB,oBAAoB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,mBAAmB;CACnG,CAAC,CAAC;AASH,8DAA8D;AAC9D,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,MAAc;IAC9D,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,gDAAgD,EAAE,CAAC;IAC5G,CAAC;IACD,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtC,CAAC;IACD,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACtE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,GAAG,MAAM,GAAG,sEAAsE,EAAE,CAAC;IACjJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { BridgeHandle } from './bridge.js';
2
+ /** Terminal marker the sub-session must emit when the task is complete. */
3
+ export declare const SESSION_DONE_MARKER = "[SESSION_DONE]";
4
+ export interface AgentSessionOpts {
5
+ /** The child server's own loopback port (drive /api/chat here). */
6
+ port: number;
7
+ /** The task the parent handed down. */
8
+ task: string;
9
+ /** Correlation handle (the parent generated it; echoed in the reply). */
10
+ handle: string;
11
+ /** Parent bridge selfId -- the directed target for the typed reply. */
12
+ replyTo: string;
13
+ /** The child's bridge handle (from startChatServer). Null = bridge off:
14
+ * the result is still written to disk, but the parent cannot poll it. */
15
+ bridge: BridgeHandle | null | undefined;
16
+ /** Soft token budget across all turns. Default 120000. */
17
+ budgetTokens?: number;
18
+ /** Hard cap on turns. Default 6. */
19
+ maxTurns?: number;
20
+ /** Injected fetch (tests). Defaults to global fetch. */
21
+ fetchImpl?: typeof fetch;
22
+ /** Progress log sink. */
23
+ log?: (m: string) => void;
24
+ }
25
+ export type AgentSessionStatus = 'done' | 'budget' | 'maxturns' | 'error';
26
+ export interface AgentSessionResult {
27
+ handle: string;
28
+ status: AgentSessionStatus;
29
+ /** Final assistant text (marker stripped). */
30
+ reply: string;
31
+ turns: number;
32
+ tokens_in: number;
33
+ tokens_out: number;
34
+ result_path: string | null;
35
+ error?: string;
36
+ }
37
+ /** Where a sub-session's full result is persisted (the bridge signal carries
38
+ * only a summary + this path, so a large deliverable is never truncated by
39
+ * the 4 KB bus cap). */
40
+ export declare function sessionResultPath(handle: string): string;
41
+ /**
42
+ * Run the sub-session task to completion (or budget/turn cap), persist the
43
+ * result, and publish the typed reply to the parent over the bridge.
44
+ */
45
+ export declare function runAgentSession(opts: AgentSessionOpts): Promise<AgentSessionResult>;
46
+ //# sourceMappingURL=agent_session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_session.d.ts","sourceRoot":"","sources":["../../src/chat/agent_session.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB;8EAC0E;IAC1E,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,yBAAyB;IACzB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;IAC3B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;yBAEyB;AACzB,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGxD;AAoDD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwFzF"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * agent_session -- the autonomous runner for a headless `yf chat` sub-session
3
+ * (Pablo 2026-06-28, yujin.session.*).
4
+ *
5
+ * The parent session launches a child `yf chat --agent --task ...` via the
6
+ * yujin.session.spawn verb. The child boots the full chat server headless
7
+ * (agentMode: no browser, no registry mutation, no relay consumer) and then
8
+ * runs THIS loop: it drives its own /api/chat loopback with the task, up to a
9
+ * bounded number of turns / a token budget, until the brain closes with the
10
+ * [SESSION_DONE] marker. It then writes the full result to disk and publishes
11
+ * a compact signal on the bridge's typed 'session_reply' lane (directed to the
12
+ * parent), which the parent reads on demand via yujin.session.collect.
13
+ *
14
+ * The child's VERB scope (read/write/safe-shell/graph, no push/destructive,
15
+ * no grandchildren) is enforced separately in nac3_invoke via the
16
+ * YF_AGENT_MODE env flag -- not here. This module is pure orchestration.
17
+ *
18
+ * ASCII-only.
19
+ */
20
+ import path from 'node:path';
21
+ import os from 'node:os';
22
+ import fs from 'node:fs/promises';
23
+ /** Terminal marker the sub-session must emit when the task is complete. */
24
+ export const SESSION_DONE_MARKER = '[SESSION_DONE]';
25
+ function configDir() {
26
+ const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
27
+ const dir = process.env.YF_CONFIG_DIR || path.join(home, '.yujin-forge');
28
+ return dir.endsWith('.yujin-forge') ? dir : path.join(dir, '.yujin-forge');
29
+ }
30
+ /** Where a sub-session's full result is persisted (the bridge signal carries
31
+ * only a summary + this path, so a large deliverable is never truncated by
32
+ * the 4 KB bus cap). */
33
+ export function sessionResultPath(handle) {
34
+ const safe = handle.replace(/[^a-zA-Z0-9_.-]/g, '_').slice(0, 80);
35
+ return path.join(configDir(), 'sessions', safe + '.json');
36
+ }
37
+ /** Wrap the raw task with the sub-session contract: scope reminder + the
38
+ * mandatory terminal marker so the runner knows when it is done. */
39
+ function wrapTask(task) {
40
+ return [
41
+ 'Sos una SUB-SESION de Forge en MODO AGENTE, lanzada por la sesion principal',
42
+ 'para una tarea acotada. Trabajas sola y headless (sin panel, sin usuario que',
43
+ 'apruebe modales en vivo).',
44
+ '',
45
+ 'SCOPE: podes leer/buscar/escribir archivos del proyecto, correr comandos',
46
+ 'shell SEGUROS, y consultar el grafo / pendientes / lector. NO podes hacer',
47
+ 'git push/commit, ni acciones destructivas, ni lanzar otras sub-sesiones --',
48
+ 'esas llamadas te seran rechazadas automaticamente, no insistas.',
49
+ '',
50
+ 'Cuando termines, entrega un RESUMEN FINAL claro y accionable de lo que',
51
+ 'encontraste o hiciste, y cerra el mensaje EXACTAMENTE con el marcador',
52
+ SESSION_DONE_MARKER + ' en una linea propia.',
53
+ '',
54
+ 'TAREA:',
55
+ task,
56
+ ].join('\n');
57
+ }
58
+ async function postTurn(fetchImpl, port, content, sessionId) {
59
+ const resp = await fetchImpl('http://127.0.0.1:' + port + '/api/chat', {
60
+ method: 'POST',
61
+ headers: { 'content-type': 'application/json' },
62
+ body: JSON.stringify({
63
+ messages: [{ role: 'user', content }],
64
+ session_id: sessionId,
65
+ /* origin 'bridge' keeps the turn out of the mobile/relay echo path. */
66
+ origin: 'bridge',
67
+ }),
68
+ });
69
+ const j = await resp.json();
70
+ if (!j || j.ok === false)
71
+ throw new Error(j?.error || 'turn failed');
72
+ return {
73
+ text: String(j.message?.text ?? ''),
74
+ tokensIn: Number(j.tokens?.in ?? 0),
75
+ tokensOut: Number(j.tokens?.out ?? 0),
76
+ };
77
+ }
78
+ /**
79
+ * Run the sub-session task to completion (or budget/turn cap), persist the
80
+ * result, and publish the typed reply to the parent over the bridge.
81
+ */
82
+ export async function runAgentSession(opts) {
83
+ const fetchImpl = opts.fetchImpl ?? fetch;
84
+ const maxTurns = Math.max(1, Math.min(20, opts.maxTurns ?? 6));
85
+ const budget = Math.max(0, opts.budgetTokens ?? 120_000);
86
+ const log = opts.log ?? (() => undefined);
87
+ const sessionId = 'agent-' + opts.handle;
88
+ let turns = 0;
89
+ let tokIn = 0;
90
+ let tokOut = 0;
91
+ let lastReply = '';
92
+ let status = 'maxturns';
93
+ let error;
94
+ try {
95
+ let nextMsg = wrapTask(opts.task);
96
+ while (turns < maxTurns) {
97
+ const r = await postTurn(fetchImpl, opts.port, nextMsg, sessionId);
98
+ turns += 1;
99
+ tokIn += r.tokensIn;
100
+ tokOut += r.tokensOut;
101
+ lastReply = r.text;
102
+ log('[session ' + opts.handle + '] turn ' + turns + ' (+' + (r.tokensIn + r.tokensOut) + ' tok)');
103
+ if (new RegExp(SESSION_DONE_MARKER.replace(/[[\]]/g, '\\$&'), 'i').test(r.text)) {
104
+ status = 'done';
105
+ break;
106
+ }
107
+ if (budget > 0 && tokIn + tokOut >= budget) {
108
+ status = 'budget';
109
+ break;
110
+ }
111
+ nextMsg = 'Continua la tarea. Cuando termines, da un resumen final y cierra'
112
+ + ' con ' + SESSION_DONE_MARKER + '.';
113
+ }
114
+ }
115
+ catch (err) {
116
+ status = 'error';
117
+ error = err instanceof Error ? err.message : String(err);
118
+ log('[session ' + opts.handle + '] error: ' + error);
119
+ }
120
+ const reply = lastReply.replace(SESSION_DONE_MARKER, '').trim();
121
+ /* Persist the full result to disk (no bus-cap truncation). */
122
+ let resultPath = null;
123
+ try {
124
+ const p = sessionResultPath(opts.handle);
125
+ await fs.mkdir(path.dirname(p), { recursive: true });
126
+ await fs.writeFile(p, JSON.stringify({
127
+ handle: opts.handle,
128
+ status,
129
+ reply,
130
+ turns,
131
+ tokens_in: tokIn,
132
+ tokens_out: tokOut,
133
+ finished_at: new Date().toISOString(),
134
+ ...(error ? { error } : {}),
135
+ }, null, 2), 'utf-8');
136
+ resultPath = p;
137
+ }
138
+ catch (err) {
139
+ log('[session ' + opts.handle + '] persist failed: ' + (err instanceof Error ? err.message : String(err)));
140
+ }
141
+ /* Publish the compact signal on the typed lane (directed to the parent).
142
+ * The summary is bounded; the parent loads result_path for the full text. */
143
+ if (opts.bridge) {
144
+ try {
145
+ const summary = reply.slice(0, 1500);
146
+ const signal = JSON.stringify({
147
+ v: 1,
148
+ handle: opts.handle,
149
+ status,
150
+ summary,
151
+ result_path: resultPath,
152
+ turns,
153
+ tokens_in: tokIn,
154
+ tokens_out: tokOut,
155
+ ...(error ? { error } : {}),
156
+ });
157
+ await opts.bridge.send(signal, { to: opts.replyTo, kind: 'session_reply' });
158
+ log('[session ' + opts.handle + '] reply -> ' + opts.replyTo + ' (' + status + ')');
159
+ }
160
+ catch (err) {
161
+ log('[session ' + opts.handle + '] reply send failed: ' + (err instanceof Error ? err.message : String(err)));
162
+ }
163
+ }
164
+ else {
165
+ log('[session ' + opts.handle + '] bridge off -- result on disk only at ' + (resultPath || '?'));
166
+ }
167
+ return { handle: opts.handle, status, reply, turns, tokens_in: tokIn, tokens_out: tokOut, result_path: resultPath, ...(error ? { error } : {}) };
168
+ }
169
+ //# sourceMappingURL=agent_session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_session.js","sourceRoot":"","sources":["../../src/chat/agent_session.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,13 @@ export interface BridgeMessage {
19
19
  to?: string;
20
20
  /** Hop counter for loop control across a directed chain (capped). */
21
21
  hop?: number;
22
+ /** Message lane. Absent / 'chat' = a coordination chat message (directed
23
+ * ones get injected as a chat turn on the target). Any other value is a
24
+ * TYPED lane that is NOT auto-injected -- it stays in the ring for the
25
+ * target to POLL on demand (e.g. 'session_reply', a spawned sub-session's
26
+ * result for yujin.session.collect). Keeps autonomous replies from
27
+ * spending a chat turn on the parent. */
28
+ kind?: string;
22
29
  }
23
30
  export interface BridgeState {
24
31
  instances: BridgeInstance[];
@@ -40,6 +47,7 @@ export interface BridgeHandle {
40
47
  send(text: string, opts?: {
41
48
  to?: string;
42
49
  hop?: number;
50
+ kind?: string;
43
51
  }): Promise<void>;
44
52
  state(): Promise<BridgeState>;
45
53
  stop(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,WAAW,QAA6C,CAAC;AAYtE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX;;gEAE4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAsLD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAmEhG"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,WAAW,QAA6C,CAAC;AAYtE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX;;gEAE4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;8CAK0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AA0LD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAoEhG"}
@@ -177,15 +177,19 @@ function makeHostServer() {
177
177
  const from_name = String(b.from_name || '');
178
178
  const to = b.to ? String(b.to).slice(0, 120) : undefined;
179
179
  const hop = Math.max(0, Math.min(MAX_HOP + 1, Number(b.hop) || 0));
180
+ const kind = b.kind ? String(b.kind).slice(0, 40) : undefined;
180
181
  seq.n += 1;
181
182
  messages.push({
182
183
  seq: seq.n, from, from_name, text, ts: Date.now(),
183
- ...(to ? { to } : {}), hop,
184
+ ...(to ? { to } : {}), hop, ...(kind ? { kind } : {}),
184
185
  });
185
186
  while (messages.length > MSG_RING)
186
187
  messages.shift();
187
- /* Directed -> push-deliver to the target's inbox (fire-and-forget). */
188
- if (to)
188
+ /* Directed -> push-deliver to the target's inbox (fire-and-forget),
189
+ * but ONLY for the chat lane. A typed lane (kind='session_reply',
190
+ * etc.) must NOT be injected as a chat turn -- it rides the ring for
191
+ * the target to poll. */
192
+ if (to && (!kind || kind === 'chat'))
189
193
  deliverDirected({ from, from_name, text, to, hop });
190
194
  send(200, { ok: true, seq: seq.n, directed: !!to });
191
195
  });
@@ -276,6 +280,7 @@ export async function startBridge(self, portOverride) {
276
280
  from: self.id, from_name: self.project_name, text: t,
277
281
  ...(opts?.to ? { to: opts.to } : {}),
278
282
  ...(typeof opts?.hop === 'number' ? { hop: opts.hop } : {}),
283
+ ...(opts?.kind ? { kind: opts.kind } : {}),
279
284
  });
280
285
  }
281
286
  async function state() {
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,12 @@ export interface DoctrineDigestEntry {
25
25
  export declare const DOCTRINE_DIGEST: DoctrineDigestEntry[];
26
26
  /** All slugs covered by the digest (for the parity test). */
27
27
  export declare function digestSlugs(): string[];
28
+ export interface DoctrineDigestOptions {
29
+ /** When false (default), the session-orchestration line is omitted -- it
30
+ * only applies when multi-agent orchestration is enabled in config. */
31
+ includeSession?: boolean;
32
+ }
28
33
  /** Render the always-injected mandatory block for the system prompt.
29
34
  * Returned as an array of lines to splice into the prompt builder. */
30
- export declare function buildDoctrineDigestLines(): string[];
35
+ export declare function buildDoctrineDigestLines(opts?: DoctrineDigestOptions): string[];
31
36
  //# sourceMappingURL=doctrine_digest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctrine_digest.d.ts","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,EAAE,mBAAmB,EAiFhD,CAAC;AAEF,6DAA6D;AAC7D,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED;uEACuE;AACvE,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAenD"}
1
+ {"version":3,"file":"doctrine_digest.d.ts","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,EAAE,mBAAmB,EAqFhD,CAAC;AAEF,6DAA6D;AAC7D,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,MAAM,WAAW,qBAAqB;IACpC;4EACwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;uEACuE;AACvE,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,EAAE,CAiBnF"}
@@ -83,6 +83,10 @@ export const DOCTRINE_DIGEST = [
83
83
  slugs: ['r8-modal'],
84
84
  rule: 'approval-required actions go through the R8 modal -- the modal IS the question.',
85
85
  },
86
+ {
87
+ slugs: ['session-orchestration'],
88
+ rule: 'yujin.session.spawn runs an ORTHOGONAL task in a headless sub-session in parallel (never for trivial work or work needing the live chat); the child reads/writes/safe-shell/queries but cannot push/commit/destroy or spawn grandchildren -- it RETURNS its deliverable, YOU do the outward parts. Always session.collect; set budget_tokens.',
89
+ },
86
90
  {
87
91
  slugs: ['byok-vs-managed', 'cost-router-escalation'],
88
92
  rule: 'BYOK when the user has provider keys, managed otherwise; honor the eco/frontier override; escalate on quality signals.',
@@ -102,7 +106,8 @@ export function digestSlugs() {
102
106
  }
103
107
  /** Render the always-injected mandatory block for the system prompt.
104
108
  * Returned as an array of lines to splice into the prompt builder. */
105
- export function buildDoctrineDigestLines() {
109
+ export function buildDoctrineDigestLines(opts = {}) {
110
+ const entries = DOCTRINE_DIGEST.filter((e) => opts.includeSession === true || !e.slugs.includes('session-orchestration'));
106
111
  const lines = [
107
112
  '=================================================================',
108
113
  'QUALITY DOCTRINES (mandatory -- these are the guardrails)',
@@ -112,7 +117,7 @@ export function buildDoctrineDigestLines() {
112
117
  'full text with yujin.doctrine.discover({slugs:["<slug>"]}).',
113
118
  '',
114
119
  ];
115
- for (const e of DOCTRINE_DIGEST) {
120
+ for (const e of entries) {
116
121
  lines.push('* ' + e.slugs.join(' / ') + ': ' + e.rule);
117
122
  }
118
123
  lines.push('');
@@ -1 +1 @@
1
- {"version":3,"file":"doctrine_digest.js","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD;QACE,KAAK,EAAE,CAAC,sBAAsB,CAAC;QAC/B,IAAI,EACF,8DAA8D;cAC5D,6DAA6D;cAC7D,+DAA+D;cAC/D,uDAAuD;cACvD,gDAAgD;KACrD;IACD;QACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;QACzB,IAAI,EACF,gEAAgE;cAC9D,0DAA0D;cAC1D,4CAA4C;KACjD;IACD;QACE,KAAK,EAAE,CAAC,YAAY,CAAC;QACrB,IAAI,EAAE,2FAA2F;KAClG;IACD;QACE,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,IAAI,EAAE,2IAA2I;KAClJ;IACD;QACE,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,KAAK,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;QACtC,IAAI,EAAE,2IAA2I;KAClJ;IACD;QACE,KAAK,EAAE,CAAC,gBAAgB,CAAC;QACzB,IAAI,EAAE,0aAA0a;KACjb;IACD;QACE,KAAK,EAAE,CAAC,OAAO,CAAC;QAChB,IAAI,EAAE,iGAAiG;KACxG;IACD;QACE,KAAK,EAAE,CAAC,iBAAiB,CAAC;QAC1B,IAAI,EAAE,qFAAqF;KAC5F;IACD;QACE,KAAK,EAAE,CAAC,iBAAiB,CAAC;QAC1B,IAAI,EAAE,4GAA4G;KACnH;IACD;QACE,KAAK,EAAE,CAAC,sBAAsB,CAAC;QAC/B,IAAI,EAAE,kJAAkJ;KACzJ;IACD;QACE,KAAK,EAAE,CAAC,uBAAuB,CAAC;QAChC,IAAI,EAAE,mFAAmF;KAC1F;IACD;QACE,KAAK,EAAE,CAAC,kBAAkB,CAAC;QAC3B,IAAI,EAAE,+LAA+L;KACtM;IACD;QACE,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,IAAI,EAAE,gkCAAgkC;KACvkC;IACD;QACE,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,IAAI,EAAE,iFAAiF;KACxF;IACD;QACE,KAAK,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;QACpD,IAAI,EAAE,wHAAwH;KAC/H;IACD;QACE,KAAK,EAAE,CAAC,cAAc,CAAC;QACvB,IAAI,EAAE,sXAAsX;KAC7X;IACD;QACE,KAAK,EAAE,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,kBAAkB,CAAC;QAC3G,IAAI,EAAE,gLAAgL;KACvL;CACF,CAAC;AAEF,6DAA6D;AAC7D,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED;uEACuE;AACvE,MAAM,UAAU,wBAAwB;IACtC,MAAM,KAAK,GAAa;QACtB,mEAAmE;QACnE,2DAA2D;QAC3D,mEAAmE;QACnE,EAAE;QACF,gEAAgE;QAChE,6DAA6D;QAC7D,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"doctrine_digest.js","sourceRoot":"","sources":["../../src/chat/doctrine_digest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/chat/panel.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;2BAKuB;IACvB,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CA4sWxD"}
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/chat/panel.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;2BAKuB;IACvB,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CA6yWxD"}