@agimon-ai/doompi-plan 0.0.1-alpha.2 → 0.0.1-alpha.20

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 (124) hide show
  1. package/README.md +44 -19
  2. package/dist/adapters/pi/extension.cjs +2 -0
  3. package/dist/adapters/pi/extension.cjs.map +1 -0
  4. package/dist/{extension.d.cts → adapters/pi/extension.d.cts} +1 -1
  5. package/dist/adapters/pi/extension.d.cts.map +1 -0
  6. package/dist/{extension.d.mts → adapters/pi/extension.d.mts} +1 -1
  7. package/dist/adapters/pi/extension.d.mts.map +1 -0
  8. package/dist/adapters/pi/extension.mjs +2 -0
  9. package/dist/adapters/pi/extension.mjs.map +1 -0
  10. package/dist/adapters/telemetry/logSinkTelemetry.cjs +2 -0
  11. package/dist/adapters/telemetry/logSinkTelemetry.cjs.map +1 -0
  12. package/dist/adapters/telemetry/logSinkTelemetry.d.cts +34 -0
  13. package/dist/adapters/telemetry/logSinkTelemetry.d.cts.map +1 -0
  14. package/dist/adapters/telemetry/logSinkTelemetry.d.mts +34 -0
  15. package/dist/adapters/telemetry/logSinkTelemetry.d.mts.map +1 -0
  16. package/dist/adapters/telemetry/logSinkTelemetry.mjs +2 -0
  17. package/dist/adapters/telemetry/logSinkTelemetry.mjs.map +1 -0
  18. package/dist/config.cjs +1 -2
  19. package/dist/config.d.cts +2 -14
  20. package/dist/config.d.mts +2 -14
  21. package/dist/config.mjs +1 -2
  22. package/dist/extensions/doom.cjs +1 -1
  23. package/dist/extensions/doom.cjs.map +1 -1
  24. package/dist/extensions/doom.mjs +1 -1
  25. package/dist/extensions/doom.mjs.map +1 -1
  26. package/dist/extensions/pi.cjs +1 -1
  27. package/dist/extensions/pi.cjs.map +1 -1
  28. package/dist/extensions/pi.d.cts +1 -1
  29. package/dist/extensions/pi.d.mts +1 -1
  30. package/dist/extensions/pi.mjs +1 -1
  31. package/dist/extensions/pi.mjs.map +1 -1
  32. package/dist/fableFlow.cjs +1 -3
  33. package/dist/fableFlow.d.cts +2 -66
  34. package/dist/fableFlow.d.mts +2 -66
  35. package/dist/fableFlow.mjs +1 -3
  36. package/dist/index.cjs +1 -1
  37. package/dist/index.d.cts +4 -4
  38. package/dist/index.d.mts +4 -4
  39. package/dist/index.mjs +1 -1
  40. package/dist/logSinkTelemetry.cjs +1 -2
  41. package/dist/logSinkTelemetry.d.cts +2 -24
  42. package/dist/logSinkTelemetry.d.mts +2 -24
  43. package/dist/logSinkTelemetry.mjs +1 -2
  44. package/dist/planConfig.cjs +1 -2
  45. package/dist/planConfig.d.cts +2 -0
  46. package/dist/planConfig.d.mts +2 -0
  47. package/dist/planConfig.mjs +1 -2
  48. package/dist/planMode.cjs +1 -6
  49. package/dist/planMode.d.cts +3 -75
  50. package/dist/planMode.d.mts +3 -75
  51. package/dist/planMode.mjs +1 -6
  52. package/dist/prompts.cjs +1 -3
  53. package/dist/prompts.d.cts +2 -24
  54. package/dist/prompts.d.mts +2 -24
  55. package/dist/prompts.mjs +1 -3
  56. package/dist/schemas/plan/config.cjs +2 -0
  57. package/dist/schemas/plan/config.cjs.map +1 -0
  58. package/dist/schemas/plan/config.d.cts +14 -0
  59. package/dist/schemas/plan/config.d.cts.map +1 -0
  60. package/dist/schemas/plan/config.d.mts +14 -0
  61. package/dist/schemas/plan/config.d.mts.map +1 -0
  62. package/dist/schemas/plan/config.mjs +2 -0
  63. package/dist/schemas/plan/config.mjs.map +1 -0
  64. package/dist/schemas/plan/planConfig.cjs +2 -0
  65. package/dist/schemas/plan/planConfig.cjs.map +1 -0
  66. package/dist/schemas/plan/planConfig.d.cts +21 -0
  67. package/dist/schemas/plan/planConfig.d.cts.map +1 -0
  68. package/dist/schemas/plan/planConfig.d.mts +21 -0
  69. package/dist/schemas/plan/planConfig.d.mts.map +1 -0
  70. package/dist/schemas/plan/planConfig.mjs +2 -0
  71. package/dist/schemas/plan/planConfig.mjs.map +1 -0
  72. package/dist/services/plan/fableFlow.cjs +3 -0
  73. package/dist/services/plan/fableFlow.cjs.map +1 -0
  74. package/dist/services/plan/fableFlow.d.cts +66 -0
  75. package/dist/services/plan/fableFlow.d.cts.map +1 -0
  76. package/dist/services/plan/fableFlow.d.mts +66 -0
  77. package/dist/services/plan/fableFlow.d.mts.map +1 -0
  78. package/dist/services/plan/fableFlow.mjs +3 -0
  79. package/dist/services/plan/fableFlow.mjs.map +1 -0
  80. package/dist/services/plan/planMode.cjs +6 -0
  81. package/dist/services/plan/planMode.cjs.map +1 -0
  82. package/dist/services/plan/planMode.d.cts +79 -0
  83. package/dist/services/plan/planMode.d.cts.map +1 -0
  84. package/dist/services/plan/planMode.d.mts +79 -0
  85. package/dist/services/plan/planMode.d.mts.map +1 -0
  86. package/dist/services/plan/planMode.mjs +6 -0
  87. package/dist/services/plan/planMode.mjs.map +1 -0
  88. package/dist/services/plan/prompts.cjs +3 -0
  89. package/dist/services/plan/prompts.cjs.map +1 -0
  90. package/dist/services/plan/prompts.d.cts +24 -0
  91. package/dist/services/plan/prompts.d.cts.map +1 -0
  92. package/dist/services/plan/prompts.d.mts +24 -0
  93. package/dist/services/plan/prompts.d.mts.map +1 -0
  94. package/dist/services/plan/prompts.mjs +3 -0
  95. package/dist/services/plan/prompts.mjs.map +1 -0
  96. package/package.json +16 -8
  97. package/dist/config.cjs.map +0 -1
  98. package/dist/config.d.cts.map +0 -1
  99. package/dist/config.d.mts.map +0 -1
  100. package/dist/config.mjs.map +0 -1
  101. package/dist/extension.cjs +0 -2
  102. package/dist/extension.cjs.map +0 -1
  103. package/dist/extension.d.cts.map +0 -1
  104. package/dist/extension.d.mts.map +0 -1
  105. package/dist/extension.mjs +0 -2
  106. package/dist/extension.mjs.map +0 -1
  107. package/dist/fableFlow.cjs.map +0 -1
  108. package/dist/fableFlow.d.cts.map +0 -1
  109. package/dist/fableFlow.d.mts.map +0 -1
  110. package/dist/fableFlow.mjs.map +0 -1
  111. package/dist/logSinkTelemetry.cjs.map +0 -1
  112. package/dist/logSinkTelemetry.d.cts.map +0 -1
  113. package/dist/logSinkTelemetry.d.mts.map +0 -1
  114. package/dist/logSinkTelemetry.mjs.map +0 -1
  115. package/dist/planConfig.cjs.map +0 -1
  116. package/dist/planConfig.mjs.map +0 -1
  117. package/dist/planMode.cjs.map +0 -1
  118. package/dist/planMode.d.cts.map +0 -1
  119. package/dist/planMode.d.mts.map +0 -1
  120. package/dist/planMode.mjs.map +0 -1
  121. package/dist/prompts.cjs.map +0 -1
  122. package/dist/prompts.d.cts.map +0 -1
  123. package/dist/prompts.d.mts.map +0 -1
  124. package/dist/prompts.mjs.map +0 -1
package/README.md CHANGED
@@ -1,13 +1,17 @@
1
1
  # @agimon-ai/doompi-plan
2
2
 
3
- Reusable Pi read-only planning mode extension.
3
+ **Planning mode should be a permission boundary, not a polite request.**
4
4
 
5
- Repository read-only planning, plan persistence, and approval handoff. Plan is a minor mode:
6
- it toggles mid-session and reports itself on the shared `MODES` line.
5
+ This package makes the repository read-only while the agent explores, writes a plan to
6
+ disk, and waits for approval. It snapshots the active tools, model, and thinking level on
7
+ the way in and restores them on the way out. If restoration fails, the session stays
8
+ read-only rather than pretending everything is fine.
7
9
 
8
- Part of [Doompi](https://www.npmjs.com/package/@agimon-ai/doompi), a coding agent that loads
9
- only the skills and tools you name. This package is composed by Doompi and is not usually
10
- installed on its own.
10
+ Plan is a minor mode. It can be turned on halfway through a session, stacks with the other
11
+ modes, and reports its state on the shared `MODES` line.
12
+
13
+ This is part of [Doompi](https://www.npmjs.com/package/@agimon-ai/doompi). Doompi includes
14
+ it as a battery-provided minor mode in every major mode; it stays inactive until requested.
11
15
 
12
16
  ## Install
13
17
 
@@ -17,25 +21,46 @@ npm install @agimon-ai/doompi-plan
17
21
 
18
22
  ## How it loads
19
23
 
20
- Name it in a layer in `.doom/modes.yaml`, then add that layer to a major mode:
21
-
22
- ```yaml
23
- layers:
24
- plan-mode:
25
- packages: ['@agimon-ai/doompi-plan/extensions/doom']
24
+ Doompi loads the Doom adapter as part of its battery-included minor-mode closure. Do not add
25
+ Plan to `.doom/modes.yaml`: major modes select always-active capabilities, while Plan is
26
+ available on demand and contributes no active model tools until Plan mode starts.
26
27
 
27
- majorMode:
28
- dev: [plan-mode]
29
- ```
28
+ When embedding the package outside Doompi, its Pi manifest selects the Doom adapter. Use
29
+ `/extensions/pi` for the plain Pi adapter or `/extensions/doom` when choosing the Doom
30
+ integration explicitly.
30
31
 
31
32
  ## Leader
32
33
 
33
- `SPC p p` plans, `SPC p c` cancels, `SPC p d` debugs, `SPC p f` runs the fable flow, once
34
- the extension is loaded.
34
+ - `SPC p p` starts normal read-only planning.
35
+ - `SPC p d` starts debug planning with diagnostic evidence.
36
+ - `SPC p f` starts the repository-aware Fable flow.
37
+ - `SPC p e` exits Plan mode and restores the previous session state.
38
+
39
+ The exit binding appears only while Plan mode is active.
40
+
41
+ ## Plan review
42
+
43
+ When the selected major mode already has a live `ask_user_question` tool, Plan mode keeps
44
+ it available beside the read-only exploration tools. It does not activate an omitted
45
+ `ask-user` layer, and it removes a stale questionnaire name when no live registration
46
+ exists.
47
+
48
+ After `write_plan`, `complete_plan` asks whether to exit or keep planning. In autonomous
49
+ Voice mode the choices are narrated instead of shown in a modal, the turn ends, and the
50
+ next user message carries the decision. Plan mode exits only on an explicit `exit`;
51
+ `continue` keeps the repository read-only for another revision.
52
+
53
+ ## Voice
54
+
55
+ The Doom adapter contributes `activate_plan` and `exit_plan` to the session-scoped Voice
56
+ catalog. They run through the same serialized transitions as the leader bindings and are
57
+ not registered as direct Pi tools. The plain Pi adapter does not publish these Doom
58
+ capabilities.
35
59
 
36
- ## Entry points
60
+ ## Public API
37
61
 
38
- 9 subpaths are declared in the `exports` field of `package.json`.
62
+ Supported subpaths expose the Plan mode, plan storage, tools, flavors, and Pi/Doom adapters.
63
+ See `package.json` for the complete export list.
39
64
 
40
65
  ## License
41
66
 
@@ -0,0 +1,2 @@
1
+ const e=require(`../../services/plan/planMode.cjs`),t={recordError:async()=>void 0,recordWarning:async()=>void 0,recordEvent:async()=>void 0,flush:async()=>void 0,shutdown:async()=>void 0};function n(n){e.planModeExtension(n,()=>void 0,t,{doomIntegrations:!1})}exports.activateStandardPlanExtension=n;
2
+ //# sourceMappingURL=extension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.cjs","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { planModeExtension } from '../../services/plan/planMode.ts';\nimport type { PlanTelemetry } from '../telemetry/logSinkTelemetry.ts';\n\nconst standardTelemetry: PlanTelemetry = {\n recordError: async () => undefined,\n recordWarning: async () => undefined,\n recordEvent: async () => undefined,\n flush: async () => undefined,\n shutdown: async () => undefined,\n};\n\n/** Standard Pi composition using session APIs without Doom config or UI providers. */\nexport function activateStandardPlanExtension(pi: ExtensionAPI): void {\n planModeExtension(pi, () => undefined, standardTelemetry, { doomIntegrations: false });\n}\n"],"mappings":"oDAIM,EAAmC,CACvC,YAAa,SAAY,IAAA,GACzB,cAAe,SAAY,IAAA,GAC3B,YAAa,SAAY,IAAA,GACzB,MAAO,SAAY,IAAA,GACnB,SAAU,SAAY,IAAA,GACvB,CAGD,SAAgB,EAA8B,EAAwB,CACpE,EAAA,kBAAkB,MAAU,IAAA,GAAW,EAAmB,CAAE,iBAAkB,GAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- //#region src/extension.d.ts
3
+ //#region src/adapters/pi/extension.d.ts
4
4
  /** Standard Pi composition using session APIs without Doom config or UI providers. */
5
5
  declare function activateStandardPlanExtension(pi: ExtensionAPI): void;
6
6
  //#endregion
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.cts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAagB,6BAAA,CAA8B,EAAA,EAAI,YAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
 
3
- //#region src/extension.d.ts
3
+ //#region src/adapters/pi/extension.d.ts
4
4
  /** Standard Pi composition using session APIs without Doom config or UI providers. */
5
5
  declare function activateStandardPlanExtension(pi: ExtensionAPI): void;
6
6
  //#endregion
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.mts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAagB,6BAAA,CAA8B,EAAA,EAAI,YAAA"}
@@ -0,0 +1,2 @@
1
+ import{planModeExtension as e}from"../../services/plan/planMode.mjs";const t={recordError:async()=>void 0,recordWarning:async()=>void 0,recordEvent:async()=>void 0,flush:async()=>void 0,shutdown:async()=>void 0};function n(n){e(n,()=>void 0,t,{doomIntegrations:!1})}export{n as activateStandardPlanExtension};
2
+ //# sourceMappingURL=extension.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.mjs","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { planModeExtension } from '../../services/plan/planMode.ts';\nimport type { PlanTelemetry } from '../telemetry/logSinkTelemetry.ts';\n\nconst standardTelemetry: PlanTelemetry = {\n recordError: async () => undefined,\n recordWarning: async () => undefined,\n recordEvent: async () => undefined,\n flush: async () => undefined,\n shutdown: async () => undefined,\n};\n\n/** Standard Pi composition using session APIs without Doom config or UI providers. */\nexport function activateStandardPlanExtension(pi: ExtensionAPI): void {\n planModeExtension(pi, () => undefined, standardTelemetry, { doomIntegrations: false });\n}\n"],"mappings":"qEAIA,MAAM,EAAmC,CACvC,YAAa,SAAY,IAAA,GACzB,cAAe,SAAY,IAAA,GAC3B,YAAa,SAAY,IAAA,GACzB,MAAO,SAAY,IAAA,GACnB,SAAU,SAAY,IAAA,GACvB,CAGD,SAAgB,EAA8B,EAAwB,CACpE,EAAkB,MAAU,IAAA,GAAW,EAAmB,CAAE,iBAAkB,GAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);let e=require(`@agimon-ai/doompi-telemetry`);const t={configLoadFailed:`doom_plan.config_load_failed`,writePlanFailed:`doom_plan.write_plan_failed`,writePlanTimedOut:`doom_plan.write_plan_timed_out`,writePlanUnsafePath:`doom_plan.write_plan_unsafe_path`,modelResolveFailed:`doom_plan.model_resolve_failed`,modeEnabled:`doom_plan.mode_enabled`,modeDisabled:`doom_plan.mode_disabled`,planWritten:`doom_plan.plan_written`,planReviewCompleted:`doom_plan.plan_review_completed`};function n(t={}){let n=(0,e.createDoomTelemetry)({serviceName:`doom-plan`,packageName:`@agimon-ai/doompi-plan`,cwd:t.cwd,workspaceRoot:t.workspaceRoot,env:t.env,telemetryFactory:t.telemetryFactory,warn:t.warn,enableLogs:!0,enableTraces:!0});return{recordError:(e,t,r)=>n.recordError(e,t,r),recordWarning:(e,t,r)=>n.recordWarning(e,t,r),recordEvent:(e,t)=>n.recordEvent(e,t),flush:()=>n.flush(),shutdown:()=>n.shutdown()}}exports.PLAN_EVENT=t,exports.createPlanTelemetry=n;
2
+ //# sourceMappingURL=logSinkTelemetry.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry.cjs","names":[],"sources":["../../../src/adapters/telemetry/logSinkTelemetry.ts"],"sourcesContent":["import { createDoomTelemetry, type DoomTelemetry, type DoomTelemetryOptions } from '@agimon-ai/doompi-telemetry';\n\nconst SERVICE_NAME = 'doom-plan';\nconst PACKAGE_NAME = '@agimon-ai/doompi-plan';\n\nexport const PLAN_EVENT = {\n configLoadFailed: 'doom_plan.config_load_failed',\n writePlanFailed: 'doom_plan.write_plan_failed',\n writePlanTimedOut: 'doom_plan.write_plan_timed_out',\n writePlanUnsafePath: 'doom_plan.write_plan_unsafe_path',\n modelResolveFailed: 'doom_plan.model_resolve_failed',\n modeEnabled: 'doom_plan.mode_enabled',\n modeDisabled: 'doom_plan.mode_disabled',\n planWritten: 'doom_plan.plan_written',\n planReviewCompleted: 'doom_plan.plan_review_completed',\n} as const;\n\nexport type PlanEventName = (typeof PLAN_EVENT)[keyof typeof PLAN_EVENT];\nexport type PlanEventAttributes = Record<string, string | number | boolean>;\n\nexport interface PlanTelemetryOptions {\n cwd?: string;\n workspaceRoot?: string;\n env?: NodeJS.ProcessEnv;\n telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;\n warn?: (message: string) => void;\n}\n\nexport interface PlanTelemetry {\n recordError(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;\n recordWarning(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;\n recordEvent(event: PlanEventName, attributes?: PlanEventAttributes): Promise<void>;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\nexport function createPlanTelemetry(options: PlanTelemetryOptions = {}): PlanTelemetry {\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: SERVICE_NAME,\n packageName: PACKAGE_NAME,\n cwd: options.cwd,\n workspaceRoot: options.workspaceRoot,\n env: options.env,\n telemetryFactory: options.telemetryFactory,\n warn: options.warn,\n enableLogs: true,\n enableTraces: true,\n });\n return {\n recordError: (event, error, attributes) => telemetry.recordError(event, error, attributes),\n recordWarning: (event, error, attributes) => telemetry.recordWarning(event, error, attributes),\n recordEvent: (event, attributes) => telemetry.recordEvent(event, attributes),\n flush: () => telemetry.flush(),\n shutdown: () => telemetry.shutdown(),\n };\n}\n"],"mappings":"6FAEA,MAGa,EAAa,CACxB,iBAAkB,+BAClB,gBAAiB,8BACjB,kBAAmB,iCACnB,oBAAqB,mCACrB,mBAAoB,iCACpB,YAAa,yBACb,aAAc,0BACd,YAAa,yBACb,oBAAqB,kCACtB,CAqBD,SAAgB,EAAoB,EAAgC,EAAE,CAAiB,CACrF,IAAM,GAAA,EAAA,EAAA,qBAA+C,CACnD,YAAa,YACb,YAAa,yBACb,IAAK,EAAQ,IACb,cAAe,EAAQ,cACvB,IAAK,EAAQ,IACb,iBAAkB,EAAQ,iBAC1B,KAAM,EAAQ,KACd,WAAY,GACZ,aAAc,GACf,CAAC,CACF,MAAO,CACL,aAAc,EAAO,EAAO,IAAe,EAAU,YAAY,EAAO,EAAO,EAAW,CAC1F,eAAgB,EAAO,EAAO,IAAe,EAAU,cAAc,EAAO,EAAO,EAAW,CAC9F,aAAc,EAAO,IAAe,EAAU,YAAY,EAAO,EAAW,CAC5E,UAAa,EAAU,OAAO,CAC9B,aAAgB,EAAU,UAAU,CACrC"}
@@ -0,0 +1,34 @@
1
+ import { DoomTelemetryOptions } from "@agimon-ai/doompi-telemetry";
2
+
3
+ //#region src/adapters/telemetry/logSinkTelemetry.d.ts
4
+ declare const PLAN_EVENT: {
5
+ readonly configLoadFailed: "doom_plan.config_load_failed";
6
+ readonly writePlanFailed: "doom_plan.write_plan_failed";
7
+ readonly writePlanTimedOut: "doom_plan.write_plan_timed_out";
8
+ readonly writePlanUnsafePath: "doom_plan.write_plan_unsafe_path";
9
+ readonly modelResolveFailed: "doom_plan.model_resolve_failed";
10
+ readonly modeEnabled: "doom_plan.mode_enabled";
11
+ readonly modeDisabled: "doom_plan.mode_disabled";
12
+ readonly planWritten: "doom_plan.plan_written";
13
+ readonly planReviewCompleted: "doom_plan.plan_review_completed";
14
+ };
15
+ type PlanEventName = (typeof PLAN_EVENT)[keyof typeof PLAN_EVENT];
16
+ type PlanEventAttributes = Record<string, string | number | boolean>;
17
+ interface PlanTelemetryOptions {
18
+ cwd?: string;
19
+ workspaceRoot?: string;
20
+ env?: NodeJS.ProcessEnv;
21
+ telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;
22
+ warn?: (message: string) => void;
23
+ }
24
+ interface PlanTelemetry {
25
+ recordError(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;
26
+ recordWarning(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;
27
+ recordEvent(event: PlanEventName, attributes?: PlanEventAttributes): Promise<void>;
28
+ flush(): Promise<void>;
29
+ shutdown(): Promise<void>;
30
+ }
31
+ declare function createPlanTelemetry(options?: PlanTelemetryOptions): PlanTelemetry;
32
+ //#endregion
33
+ export { PLAN_EVENT, PlanEventAttributes, PlanEventName, PlanTelemetry, PlanTelemetryOptions, createPlanTelemetry };
34
+ //# sourceMappingURL=logSinkTelemetry.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry.d.cts","names":[],"sources":["../../../src/adapters/telemetry/logSinkTelemetry.ts"],"mappings":";;;cAKa,UAAA;EAAA;;;;;;;;;;KAYD,aAAA,WAAwB,UAAA,eAAyB,UAAA;AAAA,KACjD,mBAAA,GAAsB,MAAA;AAAA,UAEjB,oBAAA;EACf,GAAA;EACA,aAAA;EACA,GAAA,GAAM,MAAA,CAAO,UAAA;EACb,gBAAA,GAAmB,WAAA,CAAY,oBAAA;EAC/B,IAAA,IAAQ,OAAA;AAAA;AAAA,UAGO,aAAA;EACf,WAAA,CAAY,KAAA,EAAO,aAAA,EAAe,KAAA,WAAgB,UAAA,GAAa,mBAAA,GAAsB,OAAA;EACrF,aAAA,CAAc,KAAA,EAAO,aAAA,EAAe,KAAA,WAAgB,UAAA,GAAa,mBAAA,GAAsB,OAAA;EACvF,WAAA,CAAY,KAAA,EAAO,aAAA,EAAe,UAAA,GAAa,mBAAA,GAAsB,OAAA;EACrE,KAAA,IAAS,OAAA;EACT,QAAA,IAAY,OAAA;AAAA;AAAA,iBAGE,mBAAA,CAAoB,OAAA,GAAS,oBAAA,GAA4B,aAAA"}
@@ -0,0 +1,34 @@
1
+ import { DoomTelemetryOptions } from "@agimon-ai/doompi-telemetry";
2
+
3
+ //#region src/adapters/telemetry/logSinkTelemetry.d.ts
4
+ declare const PLAN_EVENT: {
5
+ readonly configLoadFailed: "doom_plan.config_load_failed";
6
+ readonly writePlanFailed: "doom_plan.write_plan_failed";
7
+ readonly writePlanTimedOut: "doom_plan.write_plan_timed_out";
8
+ readonly writePlanUnsafePath: "doom_plan.write_plan_unsafe_path";
9
+ readonly modelResolveFailed: "doom_plan.model_resolve_failed";
10
+ readonly modeEnabled: "doom_plan.mode_enabled";
11
+ readonly modeDisabled: "doom_plan.mode_disabled";
12
+ readonly planWritten: "doom_plan.plan_written";
13
+ readonly planReviewCompleted: "doom_plan.plan_review_completed";
14
+ };
15
+ type PlanEventName = (typeof PLAN_EVENT)[keyof typeof PLAN_EVENT];
16
+ type PlanEventAttributes = Record<string, string | number | boolean>;
17
+ interface PlanTelemetryOptions {
18
+ cwd?: string;
19
+ workspaceRoot?: string;
20
+ env?: NodeJS.ProcessEnv;
21
+ telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;
22
+ warn?: (message: string) => void;
23
+ }
24
+ interface PlanTelemetry {
25
+ recordError(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;
26
+ recordWarning(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;
27
+ recordEvent(event: PlanEventName, attributes?: PlanEventAttributes): Promise<void>;
28
+ flush(): Promise<void>;
29
+ shutdown(): Promise<void>;
30
+ }
31
+ declare function createPlanTelemetry(options?: PlanTelemetryOptions): PlanTelemetry;
32
+ //#endregion
33
+ export { PLAN_EVENT, PlanEventAttributes, PlanEventName, PlanTelemetry, PlanTelemetryOptions, createPlanTelemetry };
34
+ //# sourceMappingURL=logSinkTelemetry.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry.d.mts","names":[],"sources":["../../../src/adapters/telemetry/logSinkTelemetry.ts"],"mappings":";;;cAKa,UAAA;EAAA;;;;;;;;;;KAYD,aAAA,WAAwB,UAAA,eAAyB,UAAA;AAAA,KACjD,mBAAA,GAAsB,MAAA;AAAA,UAEjB,oBAAA;EACf,GAAA;EACA,aAAA;EACA,GAAA,GAAM,MAAA,CAAO,UAAA;EACb,gBAAA,GAAmB,WAAA,CAAY,oBAAA;EAC/B,IAAA,IAAQ,OAAA;AAAA;AAAA,UAGO,aAAA;EACf,WAAA,CAAY,KAAA,EAAO,aAAA,EAAe,KAAA,WAAgB,UAAA,GAAa,mBAAA,GAAsB,OAAA;EACrF,aAAA,CAAc,KAAA,EAAO,aAAA,EAAe,KAAA,WAAgB,UAAA,GAAa,mBAAA,GAAsB,OAAA;EACvF,WAAA,CAAY,KAAA,EAAO,aAAA,EAAe,UAAA,GAAa,mBAAA,GAAsB,OAAA;EACrE,KAAA,IAAS,OAAA;EACT,QAAA,IAAY,OAAA;AAAA;AAAA,iBAGE,mBAAA,CAAoB,OAAA,GAAS,oBAAA,GAA4B,aAAA"}
@@ -0,0 +1,2 @@
1
+ import{createDoomTelemetry as e}from"@agimon-ai/doompi-telemetry";const t={configLoadFailed:`doom_plan.config_load_failed`,writePlanFailed:`doom_plan.write_plan_failed`,writePlanTimedOut:`doom_plan.write_plan_timed_out`,writePlanUnsafePath:`doom_plan.write_plan_unsafe_path`,modelResolveFailed:`doom_plan.model_resolve_failed`,modeEnabled:`doom_plan.mode_enabled`,modeDisabled:`doom_plan.mode_disabled`,planWritten:`doom_plan.plan_written`,planReviewCompleted:`doom_plan.plan_review_completed`};function n(t={}){let n=e({serviceName:`doom-plan`,packageName:`@agimon-ai/doompi-plan`,cwd:t.cwd,workspaceRoot:t.workspaceRoot,env:t.env,telemetryFactory:t.telemetryFactory,warn:t.warn,enableLogs:!0,enableTraces:!0});return{recordError:(e,t,r)=>n.recordError(e,t,r),recordWarning:(e,t,r)=>n.recordWarning(e,t,r),recordEvent:(e,t)=>n.recordEvent(e,t),flush:()=>n.flush(),shutdown:()=>n.shutdown()}}export{t as PLAN_EVENT,n as createPlanTelemetry};
2
+ //# sourceMappingURL=logSinkTelemetry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSinkTelemetry.mjs","names":[],"sources":["../../../src/adapters/telemetry/logSinkTelemetry.ts"],"sourcesContent":["import { createDoomTelemetry, type DoomTelemetry, type DoomTelemetryOptions } from '@agimon-ai/doompi-telemetry';\n\nconst SERVICE_NAME = 'doom-plan';\nconst PACKAGE_NAME = '@agimon-ai/doompi-plan';\n\nexport const PLAN_EVENT = {\n configLoadFailed: 'doom_plan.config_load_failed',\n writePlanFailed: 'doom_plan.write_plan_failed',\n writePlanTimedOut: 'doom_plan.write_plan_timed_out',\n writePlanUnsafePath: 'doom_plan.write_plan_unsafe_path',\n modelResolveFailed: 'doom_plan.model_resolve_failed',\n modeEnabled: 'doom_plan.mode_enabled',\n modeDisabled: 'doom_plan.mode_disabled',\n planWritten: 'doom_plan.plan_written',\n planReviewCompleted: 'doom_plan.plan_review_completed',\n} as const;\n\nexport type PlanEventName = (typeof PLAN_EVENT)[keyof typeof PLAN_EVENT];\nexport type PlanEventAttributes = Record<string, string | number | boolean>;\n\nexport interface PlanTelemetryOptions {\n cwd?: string;\n workspaceRoot?: string;\n env?: NodeJS.ProcessEnv;\n telemetryFactory?: NonNullable<DoomTelemetryOptions['telemetryFactory']>;\n warn?: (message: string) => void;\n}\n\nexport interface PlanTelemetry {\n recordError(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;\n recordWarning(event: PlanEventName, error: unknown, attributes?: PlanEventAttributes): Promise<void>;\n recordEvent(event: PlanEventName, attributes?: PlanEventAttributes): Promise<void>;\n flush(): Promise<void>;\n shutdown(): Promise<void>;\n}\n\nexport function createPlanTelemetry(options: PlanTelemetryOptions = {}): PlanTelemetry {\n const telemetry: DoomTelemetry = createDoomTelemetry({\n serviceName: SERVICE_NAME,\n packageName: PACKAGE_NAME,\n cwd: options.cwd,\n workspaceRoot: options.workspaceRoot,\n env: options.env,\n telemetryFactory: options.telemetryFactory,\n warn: options.warn,\n enableLogs: true,\n enableTraces: true,\n });\n return {\n recordError: (event, error, attributes) => telemetry.recordError(event, error, attributes),\n recordWarning: (event, error, attributes) => telemetry.recordWarning(event, error, attributes),\n recordEvent: (event, attributes) => telemetry.recordEvent(event, attributes),\n flush: () => telemetry.flush(),\n shutdown: () => telemetry.shutdown(),\n };\n}\n"],"mappings":"kEAEA,MAGa,EAAa,CACxB,iBAAkB,+BAClB,gBAAiB,8BACjB,kBAAmB,iCACnB,oBAAqB,mCACrB,mBAAoB,iCACpB,YAAa,yBACb,aAAc,0BACd,YAAa,yBACb,oBAAqB,kCACtB,CAqBD,SAAgB,EAAoB,EAAgC,EAAE,CAAiB,CACrF,IAAM,EAA2B,EAAoB,CACnD,YAAa,YACb,YAAa,yBACb,IAAK,EAAQ,IACb,cAAe,EAAQ,cACvB,IAAK,EAAQ,IACb,iBAAkB,EAAQ,iBAC1B,KAAM,EAAQ,KACd,WAAY,GACZ,aAAc,GACf,CAAC,CACF,MAAO,CACL,aAAc,EAAO,EAAO,IAAe,EAAU,YAAY,EAAO,EAAO,EAAW,CAC1F,eAAgB,EAAO,EAAO,IAAe,EAAU,cAAc,EAAO,EAAO,EAAW,CAC9F,aAAc,EAAO,IAAe,EAAU,YAAY,EAAO,EAAW,CAC5E,UAAa,EAAU,OAAO,CAC9B,aAAgB,EAAU,UAAU,CACrC"}
package/dist/config.cjs CHANGED
@@ -1,2 +1 @@
1
- require(`./_virtual/_rolldown/runtime.cjs`);let e=require(`@agimon-ai/doompi-config`);function t(t,n){let r=(0,e.parseDoomConfig)(t,n);return r.modes?{modes:r.modes}:{}}function n(t,n){let r=(0,e.mergeDoomConfigs)({...t,projectTrust:`ask`},{...n,projectTrust:`ask`});return r.modes?{modes:r.modes}:{}}function r(t,n){let r=(0,e.loadDoomConfig)(t,n);return r.modes?{modes:r.modes}:{}}exports.loadDoomConfig=r,exports.mergeDoomConfigs=n,exports.parseDoomConfig=t;
2
- //# sourceMappingURL=config.cjs.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./_virtual/_rolldown/runtime.cjs`);const e=require(`./schemas/plan/config.cjs`);let t=require(`@agimon-ai/doompi-config`);exports.getHarnessState=t.getHarnessState,exports.globalDoomConfigPath=t.globalDoomConfigPath,exports.loadDoomConfig=e.loadDoomConfig,exports.loadHarnessState=t.loadHarnessState,exports.mergeDoomConfigs=e.mergeDoomConfigs,exports.parseDoomConfig=e.parseDoomConfig,exports.parsePlanningModeConfig=t.parsePlanningModeConfig,exports.repositoryDoomConfigPath=t.repositoryDoomConfigPath,exports.resolvePlanningPlansDirectory=t.resolvePlanningPlansDirectory;
package/dist/config.d.cts CHANGED
@@ -1,14 +1,2 @@
1
- import { PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadHarnessState, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "@agimon-ai/doompi-config";
2
-
3
- //#region src/config.d.ts
4
- interface DoomConfig {
5
- modes?: {
6
- planning?: PlanningModeConfig;
7
- };
8
- }
9
- declare function parseDoomConfig(content: string, filePath: string): DoomConfig;
10
- declare function mergeDoomConfigs(globalConfig: DoomConfig, repositoryConfig: DoomConfig): DoomConfig;
11
- declare function loadDoomConfig(repoRoot: string, homeDirectory?: string): DoomConfig;
12
- //#endregion
13
- export { DoomConfig, type PlanningAgentConfig, type PlanningModeConfig, type PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
14
- //# sourceMappingURL=config.d.cts.map
1
+ import { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "./schemas/plan/config.cjs";
2
+ export { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
package/dist/config.d.mts CHANGED
@@ -1,14 +1,2 @@
1
- import { PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath as globalDoomConfigPath$1, loadHarnessState, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "@agimon-ai/doompi-config";
2
-
3
- //#region src/config.d.ts
4
- interface DoomConfig {
5
- modes?: {
6
- planning?: PlanningModeConfig;
7
- };
8
- }
9
- declare function parseDoomConfig$1(content: string, filePath: string): DoomConfig;
10
- declare function mergeDoomConfigs$1(globalConfig: DoomConfig, repositoryConfig: DoomConfig): DoomConfig;
11
- declare function loadDoomConfig$1(repoRoot: string, homeDirectory?: string): DoomConfig;
12
- //#endregion
13
- export { DoomConfig, type PlanningAgentConfig, type PlanningModeConfig, type PlanningThinkingLevel, getHarnessState, globalDoomConfigPath$1 as globalDoomConfigPath, loadDoomConfig$1 as loadDoomConfig, loadHarnessState, mergeDoomConfigs$1 as mergeDoomConfigs, parseDoomConfig$1 as parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
14
- //# sourceMappingURL=config.d.mts.map
1
+ import { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "./schemas/plan/config.mjs";
2
+ export { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
package/dist/config.mjs CHANGED
@@ -1,2 +1 @@
1
- import{getHarnessState as e,globalDoomConfigPath as t,loadDoomConfig as n,loadHarnessState as r,mergeDoomConfigs as i,parseDoomConfig as a,parsePlanningModeConfig as o,repositoryDoomConfigPath as s,resolvePlanningPlansDirectory as c}from"@agimon-ai/doompi-config";function l(e,t){let n=a(e,t);return n.modes?{modes:n.modes}:{}}function u(e,t){let n=i({...e,projectTrust:`ask`},{...t,projectTrust:`ask`});return n.modes?{modes:n.modes}:{}}function d(e,t){let r=n(e,t);return r.modes?{modes:r.modes}:{}}export{e as getHarnessState,t as globalDoomConfigPath,d as loadDoomConfig,r as loadHarnessState,u as mergeDoomConfigs,l as parseDoomConfig,o as parsePlanningModeConfig,s as repositoryDoomConfigPath,c as resolvePlanningPlansDirectory};
2
- //# sourceMappingURL=config.mjs.map
1
+ import{getHarnessState as e,globalDoomConfigPath as t,loadDoomConfig as n,loadHarnessState as r,mergeDoomConfigs as i,parseDoomConfig as a,parsePlanningModeConfig as o,repositoryDoomConfigPath as s,resolvePlanningPlansDirectory as c}from"./schemas/plan/config.mjs";export{e as getHarnessState,t as globalDoomConfigPath,n as loadDoomConfig,r as loadHarnessState,i as mergeDoomConfigs,a as parseDoomConfig,o as parsePlanningModeConfig,s as repositoryDoomConfigPath,c as resolvePlanningPlansDirectory};
@@ -1,2 +1,2 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../planMode.cjs`);function t(t){e.planModeExtension(t)}exports.default=t,exports.doomPlanExtension=t;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../services/plan/planMode.cjs`);function t(t){e.planModeExtension(t)}exports.default=t,exports.doomPlanExtension=t;
2
2
  //# sourceMappingURL=doom.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"doom.cjs","names":[],"sources":["../../src/extensions/doom.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { planModeExtension } from '../planMode.ts';\n\n/** Doom composition: Doom config, telemetry, and the SPC p leader contribution. */\nexport function doomPlanExtension(pi: ExtensionAPI): void {\n planModeExtension(pi);\n}\n\nexport { doomPlanExtension as default };\n"],"mappings":"kIAKA,SAAgB,EAAkB,EAAwB,CACxD,EAAA,kBAAkB,EAAG"}
1
+ {"version":3,"file":"doom.cjs","names":[],"sources":["../../src/extensions/doom.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { planModeExtension } from '../services/plan/planMode.ts';\n\n/** Doom composition: Doom config, telemetry, and the SPC p leader contribution. */\nexport function doomPlanExtension(pi: ExtensionAPI): void {\n planModeExtension(pi);\n}\n\nexport { doomPlanExtension as default };\n"],"mappings":"gJAKA,SAAgB,EAAkB,EAAwB,CACxD,EAAA,kBAAkB,EAAG"}
@@ -1,2 +1,2 @@
1
- import{planModeExtension as e}from"../planMode.mjs";function t(t){e(t)}export{t as default,t as doomPlanExtension};
1
+ import{planModeExtension as e}from"../services/plan/planMode.mjs";function t(t){e(t)}export{t as default,t as doomPlanExtension};
2
2
  //# sourceMappingURL=doom.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"doom.mjs","names":[],"sources":["../../src/extensions/doom.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { planModeExtension } from '../planMode.ts';\n\n/** Doom composition: Doom config, telemetry, and the SPC p leader contribution. */\nexport function doomPlanExtension(pi: ExtensionAPI): void {\n planModeExtension(pi);\n}\n\nexport { doomPlanExtension as default };\n"],"mappings":"oDAKA,SAAgB,EAAkB,EAAwB,CACxD,EAAkB,EAAG"}
1
+ {"version":3,"file":"doom.mjs","names":[],"sources":["../../src/extensions/doom.ts"],"sourcesContent":["import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\nimport { planModeExtension } from '../services/plan/planMode.ts';\n\n/** Doom composition: Doom config, telemetry, and the SPC p leader contribution. */\nexport function doomPlanExtension(pi: ExtensionAPI): void {\n planModeExtension(pi);\n}\n\nexport { doomPlanExtension as default };\n"],"mappings":"kEAKA,SAAgB,EAAkB,EAAwB,CACxD,EAAkB,EAAG"}
@@ -1,2 +1,2 @@
1
- var e=require(`../extension.cjs`).activateStandardPlanExtension;module.exports=e;
1
+ var e=require(`../adapters/pi/extension.cjs`).activateStandardPlanExtension;module.exports=e;
2
2
  //# sourceMappingURL=pi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.cjs","names":["activateStandardPlanExtension"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { activateStandardPlanExtension } from '../extension.ts';\n\nexport default activateStandardPlanExtension;\n"],"mappings":"AAEA,IAAA,6BAAeA,CAAAA"}
1
+ {"version":3,"file":"pi.cjs","names":["activateStandardPlanExtension"],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { activateStandardPlanExtension } from '../adapters/pi/extension.ts';\n\nexport default activateStandardPlanExtension;\n"],"mappings":"AAEA,IAAA,yCAAeA,CAAAA"}
@@ -1,2 +1,2 @@
1
- import { activateStandardPlanExtension } from "../extension.cjs";
1
+ import { activateStandardPlanExtension } from "../adapters/pi/extension.cjs";
2
2
  export = activateStandardPlanExtension;
@@ -1,2 +1,2 @@
1
- import { activateStandardPlanExtension } from "../extension.mjs";
1
+ import { activateStandardPlanExtension } from "../adapters/pi/extension.mjs";
2
2
  export { activateStandardPlanExtension as default };
@@ -1,2 +1,2 @@
1
- import{activateStandardPlanExtension as e}from"../extension.mjs";var t=e;export{t as default};
1
+ import{activateStandardPlanExtension as e}from"../adapters/pi/extension.mjs";var t=e;export{t as default};
2
2
  //# sourceMappingURL=pi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pi.mjs","names":[],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { activateStandardPlanExtension } from '../extension.ts';\n\nexport default activateStandardPlanExtension;\n"],"mappings":"iEAEA,IAAA,EAAe"}
1
+ {"version":3,"file":"pi.mjs","names":[],"sources":["../../src/extensions/pi.ts"],"sourcesContent":["import { activateStandardPlanExtension } from '../adapters/pi/extension.ts';\n\nexport default activateStandardPlanExtension;\n"],"mappings":"6EAEA,IAAA,EAAe"}
@@ -1,3 +1 @@
1
- require(`./_virtual/_rolldown/runtime.cjs`);let e=require(`node:buffer`),t=require(`node:crypto`);const n=`@agimon-ai/doompi-plan`,r=`claude`,i=`fable`,a=`claude/fable-plan-v1`,o=[/(?:api[_-]?key|access[_-]?token|client[_-]?secret|password|private[_-]?key|authorization|bearer)\s*[:=]/iu,/-----BEGIN [A-Z ]*PRIVATE KEY-----/u,/\bsk-[A-Za-z0-9_-]{16,}\b/u,/\bgh[pousr]_[A-Za-z0-9_]{16,}\b/u];function s(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function c(e){for(let t of e){let e=t.codePointAt(0);if(e!==void 0&&(e<=31||e===127))return!0}return!1}function l(e){return o.some(t=>t.test(e))}function u(t,n,r=!0){if(typeof t!=`string`)throw Error(`${n} must be a string.`);let i=t.trim();if(!i&&r)throw Error(`${n} must not be empty.`);if(e.Buffer.byteLength(i,`utf8`)>4096||c(i))throw Error(`${n} exceeds the bounded Fable text limit or contains control characters.`);if(l(i))throw Error(`${n} appears to contain a credential.`);return i}function d(e,t,n=!0){if(!Array.isArray(e))throw Error(`${t} must be an array.`);if(e.length>24)throw Error(`${t} exceeds the bounded item limit.`);let r=e.map((e,n)=>u(e,`${t}[${n}]`));if(n&&r.length===0)throw Error(`${t} must contain at least one item.`);return r}function f(e,t){if(typeof e!=`string`)throw Error(`${t} must be a string.`);let n=e.trim();if(!n||n.length>512||c(n))throw Error(`${t} is not a safe source path.`);if(l(n))throw Error(`${t} appears to contain a credential.`);return n}function p(e){if(!Array.isArray(e))throw Error(`verifiedFindings must be an array.`);if(e.length>24)throw Error(`verifiedFindings exceeds the bounded item limit.`);return e.map((e,t)=>{if(!s(e))throw Error(`verifiedFindings[${t}] must be an object.`);if(Object.keys(e).some(e=>e!==`path`&&e!==`finding`))throw Error(`verifiedFindings[${t}] contains an unsupported field.`);return{path:f(e.path,`verifiedFindings[${t}].path`),finding:u(e.finding,`verifiedFindings[${t}].finding`)}})}function m(e,t,n){let r=new Set(t),i=Object.keys(e).find(e=>!r.has(e));if(i)throw Error(`${n} contains unsupported field '${i}'.`)}function h(t){if(!s(t))throw Error(`Fable packet must be an object.`);m(t,[`goal`,`constraints`,`decisions`,`verifiedFindings`,`inferredFindings`,`unresolvedQuestions`,`currentPlan`],`Fable packet`);let n={goal:d(t.goal,`goal`),constraints:d(t.constraints,`constraints`,!1),decisions:d(t.decisions,`decisions`,!1),verifiedFindings:p(t.verifiedFindings),inferredFindings:d(t.inferredFindings,`inferredFindings`,!1),unresolvedQuestions:d(t.unresolvedQuestions,`unresolvedQuestions`,!1),...t.currentPlan===void 0?{}:{currentPlan:u(t.currentPlan,`currentPlan`,!1)}};if(e.Buffer.byteLength(JSON.stringify(n),`utf8`)>32768)throw Error(`Fable packet exceeds the bounded packet size.`);return n}function g(e){return l([e.draft,e.review].filter(e=>e!==void 0).join(`
2
- `))?{operationId:e.operationId,status:`failed`,stage:`failed`,durationMs:e.durationMs,errorCode:`unsafe_output`}:e}function _(e,t){return{operationId:e,status:`timed_out`,stage:`interrupted`,durationMs:Math.max(0,Date.now()-t),errorCode:`timeout`}}function v(e){let o,s=(t=`Fable operation cancelled.`)=>{let n=o;if(n){if(!n.cancelSent){n.cancelSent=!0;try{e.broker?.cancel(n.operationId,t)}catch(t){e.onError?.(t)}}n.controller.abort(Error(t))}};return{run:async(c,l)=>{if(o)throw Error(`A Fable operation is already active for this session.`);if(!e.isAuthorized())throw Error(`The Fable capability profile is not authorized.`);let u=h(c),d=`fable-${(0,t.randomUUID)()}`,f=Date.now(),p=new AbortController;o={operationId:d,controller:p,cancelSent:!1},e.onStage?.(`draft`);let m=()=>p.abort(l?.reason);l&&(l.addEventListener(`abort`,m,{once:!0}),l.aborted&&m());let v={requester:n,operationId:d,runtime:r,model:i,profile:a,packet:u},y,b=!1;try{if(!e.broker)return _(d,f);let t=e.broker.start(v,p.signal),n=new Promise(e=>{p.signal.addEventListener(`abort`,()=>{b||e({operationId:d,status:`cancelled`,stage:`cancelled`,durationMs:Math.max(0,Date.now()-f),errorCode:`cancelled`})},{once:!0})}),r=e.timeoutMs===void 0?void 0:new Promise(t=>{y=setTimeout(()=>{b=!0,s(`Fable operation timed out.`),t(_(d,f))},e.timeoutMs)}),i=g(r===void 0?await Promise.race([t,n]):await Promise.race([t,r,n]));return e.onStage?.(i.status===`completed`?`completed`:i.status===`cancelled`?`cancelled`:i.stage),i}catch(t){e.onError?.(t);let n={operationId:d,status:`failed`,stage:`failed`,durationMs:Math.max(0,Date.now()-f),errorCode:`unavailable`};return e.onStage?.(`failed`),n}finally{y&&clearTimeout(y),l&&l.removeEventListener(`abort`,m),o=void 0}},cancel:s,isActive:()=>o!==void 0}}exports.FABLE_PLAN_MODEL=i,exports.FABLE_PLAN_PROFILE=a,exports.FABLE_PLAN_REQUESTER=n,exports.FABLE_PLAN_RUNTIME=r,exports.FABLE_PROVIDER_SOURCE=`@agimon-ai/doompi-team`,exports.MAX_FABLE_ARRAY_ITEMS=24,exports.MAX_FABLE_PACKET_BYTES=32768,exports.MAX_FABLE_TEXT_BYTES=4096,exports.containsSuspectedCredential=l,exports.createFablePlanFlow=v,exports.sanitizeFablePacket=h;
3
- //# sourceMappingURL=fableFlow.cjs.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./services/plan/fableFlow.cjs`);exports.FABLE_PLAN_MODEL=e.FABLE_PLAN_MODEL,exports.FABLE_PLAN_PROFILE=e.FABLE_PLAN_PROFILE,exports.FABLE_PLAN_REQUESTER=e.FABLE_PLAN_REQUESTER,exports.FABLE_PLAN_RUNTIME=e.FABLE_PLAN_RUNTIME,exports.FABLE_PROVIDER_SOURCE=e.FABLE_PROVIDER_SOURCE,exports.MAX_FABLE_ARRAY_ITEMS=e.MAX_FABLE_ARRAY_ITEMS,exports.MAX_FABLE_PACKET_BYTES=e.MAX_FABLE_PACKET_BYTES,exports.MAX_FABLE_TEXT_BYTES=e.MAX_FABLE_TEXT_BYTES,exports.containsSuspectedCredential=e.containsSuspectedCredential,exports.createFablePlanFlow=e.createFablePlanFlow,exports.sanitizeFablePacket=e.sanitizeFablePacket;
@@ -1,66 +1,2 @@
1
- //#region src/fableFlow.d.ts
2
- declare const FABLE_PROVIDER_SOURCE = "@agimon-ai/doompi-team";
3
- declare const FABLE_PLAN_REQUESTER = "@agimon-ai/doompi-plan";
4
- declare const FABLE_PLAN_RUNTIME = "claude";
5
- declare const FABLE_PLAN_MODEL = "fable";
6
- declare const FABLE_PLAN_PROFILE = "claude/fable-plan-v1";
7
- declare const MAX_FABLE_PACKET_BYTES: number;
8
- declare const MAX_FABLE_TEXT_BYTES: number;
9
- declare const MAX_FABLE_ARRAY_ITEMS = 24;
10
- interface FablePlanFinding {
11
- path: string;
12
- finding: string;
13
- }
14
- interface FablePlanPacket {
15
- goal: string[];
16
- constraints: string[];
17
- decisions: string[];
18
- verifiedFindings: FablePlanFinding[];
19
- inferredFindings: string[];
20
- unresolvedQuestions: string[];
21
- currentPlan?: string;
22
- }
23
- type FablePlanStatus = 'completed' | 'failed' | 'timed_out' | 'cancelled' | 'interrupted';
24
- type FablePlanStage = 'draft' | 'review' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
25
- interface FablePlanResult {
26
- operationId: string;
27
- status: FablePlanStatus;
28
- stage: FablePlanStage;
29
- draft?: string;
30
- review?: string;
31
- draftRunId?: string;
32
- reviewRunId?: string;
33
- durationMs: number;
34
- errorCode?: string;
35
- }
36
- interface FablePlanRequest {
37
- requester: typeof FABLE_PLAN_REQUESTER;
38
- operationId: string;
39
- runtime: typeof FABLE_PLAN_RUNTIME;
40
- model: typeof FABLE_PLAN_MODEL;
41
- profile: typeof FABLE_PLAN_PROFILE;
42
- packet: FablePlanPacket;
43
- }
44
- interface FablePlanBroker {
45
- start(request: FablePlanRequest, signal: AbortSignal): Promise<FablePlanResult>;
46
- cancel(operationId: string, reason: string): void;
47
- }
48
- interface FableFlowOptions {
49
- broker?: FablePlanBroker;
50
- isAuthorized: () => boolean;
51
- timeoutMs?: number;
52
- onStage?: (stage: FableStage) => void;
53
- onError?: (error: unknown) => void;
54
- }
55
- type FableStage = 'idle' | 'draft' | 'review' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
56
- interface FablePlanFlow {
57
- run(value: unknown, signal?: AbortSignal): Promise<FablePlanResult>;
58
- cancel(reason?: string): void;
59
- isActive(): boolean;
60
- }
61
- declare function containsSuspectedCredential(value: string): boolean;
62
- declare function sanitizeFablePacket(value: unknown): FablePlanPacket;
63
- declare function createFablePlanFlow(options: FableFlowOptions): FablePlanFlow;
64
- //#endregion
65
- export { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket };
66
- //# sourceMappingURL=fableFlow.d.cts.map
1
+ import { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket } from "./services/plan/fableFlow.cjs";
2
+ export { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket };
@@ -1,66 +1,2 @@
1
- //#region src/fableFlow.d.ts
2
- declare const FABLE_PROVIDER_SOURCE = "@agimon-ai/doompi-team";
3
- declare const FABLE_PLAN_REQUESTER = "@agimon-ai/doompi-plan";
4
- declare const FABLE_PLAN_RUNTIME = "claude";
5
- declare const FABLE_PLAN_MODEL = "fable";
6
- declare const FABLE_PLAN_PROFILE = "claude/fable-plan-v1";
7
- declare const MAX_FABLE_PACKET_BYTES: number;
8
- declare const MAX_FABLE_TEXT_BYTES: number;
9
- declare const MAX_FABLE_ARRAY_ITEMS = 24;
10
- interface FablePlanFinding {
11
- path: string;
12
- finding: string;
13
- }
14
- interface FablePlanPacket {
15
- goal: string[];
16
- constraints: string[];
17
- decisions: string[];
18
- verifiedFindings: FablePlanFinding[];
19
- inferredFindings: string[];
20
- unresolvedQuestions: string[];
21
- currentPlan?: string;
22
- }
23
- type FablePlanStatus = 'completed' | 'failed' | 'timed_out' | 'cancelled' | 'interrupted';
24
- type FablePlanStage = 'draft' | 'review' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
25
- interface FablePlanResult {
26
- operationId: string;
27
- status: FablePlanStatus;
28
- stage: FablePlanStage;
29
- draft?: string;
30
- review?: string;
31
- draftRunId?: string;
32
- reviewRunId?: string;
33
- durationMs: number;
34
- errorCode?: string;
35
- }
36
- interface FablePlanRequest {
37
- requester: typeof FABLE_PLAN_REQUESTER;
38
- operationId: string;
39
- runtime: typeof FABLE_PLAN_RUNTIME;
40
- model: typeof FABLE_PLAN_MODEL;
41
- profile: typeof FABLE_PLAN_PROFILE;
42
- packet: FablePlanPacket;
43
- }
44
- interface FablePlanBroker {
45
- start(request: FablePlanRequest, signal: AbortSignal): Promise<FablePlanResult>;
46
- cancel(operationId: string, reason: string): void;
47
- }
48
- interface FableFlowOptions {
49
- broker?: FablePlanBroker;
50
- isAuthorized: () => boolean;
51
- timeoutMs?: number;
52
- onStage?: (stage: FableStage) => void;
53
- onError?: (error: unknown) => void;
54
- }
55
- type FableStage = 'idle' | 'draft' | 'review' | 'completed' | 'failed' | 'cancelled' | 'interrupted';
56
- interface FablePlanFlow {
57
- run(value: unknown, signal?: AbortSignal): Promise<FablePlanResult>;
58
- cancel(reason?: string): void;
59
- isActive(): boolean;
60
- }
61
- declare function containsSuspectedCredential(value: string): boolean;
62
- declare function sanitizeFablePacket(value: unknown): FablePlanPacket;
63
- declare function createFablePlanFlow(options: FableFlowOptions): FablePlanFlow;
64
- //#endregion
65
- export { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket };
66
- //# sourceMappingURL=fableFlow.d.mts.map
1
+ import { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket } from "./services/plan/fableFlow.mjs";
2
+ export { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket };
@@ -1,3 +1 @@
1
- import{Buffer as e}from"node:buffer";import{randomUUID as t}from"node:crypto";const n=`@agimon-ai/doompi-team`,r=`@agimon-ai/doompi-plan`,i=`claude`,a=`fable`,o=`claude/fable-plan-v1`,s=32*1024,c=4*1024,l=24,u=[/(?:api[_-]?key|access[_-]?token|client[_-]?secret|password|private[_-]?key|authorization|bearer)\s*[:=]/iu,/-----BEGIN [A-Z ]*PRIVATE KEY-----/u,/\bsk-[A-Za-z0-9_-]{16,}\b/u,/\bgh[pousr]_[A-Za-z0-9_]{16,}\b/u];function d(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function f(e){for(let t of e){let e=t.codePointAt(0);if(e!==void 0&&(e<=31||e===127))return!0}return!1}function p(e){return u.some(t=>t.test(e))}function m(t,n,r=!0){if(typeof t!=`string`)throw Error(`${n} must be a string.`);let i=t.trim();if(!i&&r)throw Error(`${n} must not be empty.`);if(e.byteLength(i,`utf8`)>4096||f(i))throw Error(`${n} exceeds the bounded Fable text limit or contains control characters.`);if(p(i))throw Error(`${n} appears to contain a credential.`);return i}function h(e,t,n=!0){if(!Array.isArray(e))throw Error(`${t} must be an array.`);if(e.length>24)throw Error(`${t} exceeds the bounded item limit.`);let r=e.map((e,n)=>m(e,`${t}[${n}]`));if(n&&r.length===0)throw Error(`${t} must contain at least one item.`);return r}function g(e,t){if(typeof e!=`string`)throw Error(`${t} must be a string.`);let n=e.trim();if(!n||n.length>512||f(n))throw Error(`${t} is not a safe source path.`);if(p(n))throw Error(`${t} appears to contain a credential.`);return n}function _(e){if(!Array.isArray(e))throw Error(`verifiedFindings must be an array.`);if(e.length>24)throw Error(`verifiedFindings exceeds the bounded item limit.`);return e.map((e,t)=>{if(!d(e))throw Error(`verifiedFindings[${t}] must be an object.`);if(Object.keys(e).some(e=>e!==`path`&&e!==`finding`))throw Error(`verifiedFindings[${t}] contains an unsupported field.`);return{path:g(e.path,`verifiedFindings[${t}].path`),finding:m(e.finding,`verifiedFindings[${t}].finding`)}})}function v(e,t,n){let r=new Set(t),i=Object.keys(e).find(e=>!r.has(e));if(i)throw Error(`${n} contains unsupported field '${i}'.`)}function y(t){if(!d(t))throw Error(`Fable packet must be an object.`);v(t,[`goal`,`constraints`,`decisions`,`verifiedFindings`,`inferredFindings`,`unresolvedQuestions`,`currentPlan`],`Fable packet`);let n={goal:h(t.goal,`goal`),constraints:h(t.constraints,`constraints`,!1),decisions:h(t.decisions,`decisions`,!1),verifiedFindings:_(t.verifiedFindings),inferredFindings:h(t.inferredFindings,`inferredFindings`,!1),unresolvedQuestions:h(t.unresolvedQuestions,`unresolvedQuestions`,!1),...t.currentPlan===void 0?{}:{currentPlan:m(t.currentPlan,`currentPlan`,!1)}};if(e.byteLength(JSON.stringify(n),`utf8`)>32768)throw Error(`Fable packet exceeds the bounded packet size.`);return n}function b(e){return p([e.draft,e.review].filter(e=>e!==void 0).join(`
2
- `))?{operationId:e.operationId,status:`failed`,stage:`failed`,durationMs:e.durationMs,errorCode:`unsafe_output`}:e}function x(e,t){return{operationId:e,status:`timed_out`,stage:`interrupted`,durationMs:Math.max(0,Date.now()-t),errorCode:`timeout`}}function S(e){let n,s=(t=`Fable operation cancelled.`)=>{let r=n;if(r){if(!r.cancelSent){r.cancelSent=!0;try{e.broker?.cancel(r.operationId,t)}catch(t){e.onError?.(t)}}r.controller.abort(Error(t))}};return{run:async(c,l)=>{if(n)throw Error(`A Fable operation is already active for this session.`);if(!e.isAuthorized())throw Error(`The Fable capability profile is not authorized.`);let u=y(c),d=`fable-${t()}`,f=Date.now(),p=new AbortController;n={operationId:d,controller:p,cancelSent:!1},e.onStage?.(`draft`);let m=()=>p.abort(l?.reason);l&&(l.addEventListener(`abort`,m,{once:!0}),l.aborted&&m());let h={requester:r,operationId:d,runtime:i,model:a,profile:o,packet:u},g,_=!1;try{if(!e.broker)return x(d,f);let t=e.broker.start(h,p.signal),n=new Promise(e=>{p.signal.addEventListener(`abort`,()=>{_||e({operationId:d,status:`cancelled`,stage:`cancelled`,durationMs:Math.max(0,Date.now()-f),errorCode:`cancelled`})},{once:!0})}),r=e.timeoutMs===void 0?void 0:new Promise(t=>{g=setTimeout(()=>{_=!0,s(`Fable operation timed out.`),t(x(d,f))},e.timeoutMs)}),i=b(r===void 0?await Promise.race([t,n]):await Promise.race([t,r,n]));return e.onStage?.(i.status===`completed`?`completed`:i.status===`cancelled`?`cancelled`:i.stage),i}catch(t){e.onError?.(t);let n={operationId:d,status:`failed`,stage:`failed`,durationMs:Math.max(0,Date.now()-f),errorCode:`unavailable`};return e.onStage?.(`failed`),n}finally{g&&clearTimeout(g),l&&l.removeEventListener(`abort`,m),n=void 0}},cancel:s,isActive:()=>n!==void 0}}export{a as FABLE_PLAN_MODEL,o as FABLE_PLAN_PROFILE,r as FABLE_PLAN_REQUESTER,i as FABLE_PLAN_RUNTIME,n as FABLE_PROVIDER_SOURCE,l as MAX_FABLE_ARRAY_ITEMS,s as MAX_FABLE_PACKET_BYTES,c as MAX_FABLE_TEXT_BYTES,p as containsSuspectedCredential,S as createFablePlanFlow,y as sanitizeFablePacket};
3
- //# sourceMappingURL=fableFlow.mjs.map
1
+ import{FABLE_PLAN_MODEL as e,FABLE_PLAN_PROFILE as t,FABLE_PLAN_REQUESTER as n,FABLE_PLAN_RUNTIME as r,FABLE_PROVIDER_SOURCE as i,MAX_FABLE_ARRAY_ITEMS as a,MAX_FABLE_PACKET_BYTES as o,MAX_FABLE_TEXT_BYTES as s,containsSuspectedCredential as c,createFablePlanFlow as l,sanitizeFablePacket as u}from"./services/plan/fableFlow.mjs";export{e as FABLE_PLAN_MODEL,t as FABLE_PLAN_PROFILE,n as FABLE_PLAN_REQUESTER,r as FABLE_PLAN_RUNTIME,i as FABLE_PROVIDER_SOURCE,a as MAX_FABLE_ARRAY_ITEMS,o as MAX_FABLE_PACKET_BYTES,s as MAX_FABLE_TEXT_BYTES,c as containsSuspectedCredential,l as createFablePlanFlow,u as sanitizeFablePacket};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./_virtual/_rolldown/runtime.cjs`);const e=require(`./config.cjs`),t=require(`./fableFlow.cjs`),n=require(`./prompts.cjs`),r=require(`./planMode.cjs`);let i=require(`@agimon-ai/doompi-config`);exports.FABLE_PLAN_MODEL=t.FABLE_PLAN_MODEL,exports.FABLE_PLAN_PROFILE=t.FABLE_PLAN_PROFILE,exports.FABLE_PLAN_REQUESTER=t.FABLE_PLAN_REQUESTER,exports.FABLE_PLAN_RUNTIME=t.FABLE_PLAN_RUNTIME,exports.FABLE_PROVIDER_SOURCE=t.FABLE_PROVIDER_SOURCE,exports.MAX_FABLE_ARRAY_ITEMS=t.MAX_FABLE_ARRAY_ITEMS,exports.MAX_FABLE_PACKET_BYTES=t.MAX_FABLE_PACKET_BYTES,exports.MAX_FABLE_TEXT_BYTES=t.MAX_FABLE_TEXT_BYTES,exports.WRITE_PLAN_TIMEOUT_MS=r.WRITE_PLAN_TIMEOUT_MS,exports.buildDebugPlanningPrompt=n.buildDebugPlanningPrompt,exports.buildFablePlanningPrompt=n.buildFablePlanningPrompt,exports.buildFlavorPlanningPrompt=n.buildFlavorPlanningPrompt,exports.buildNormalPlanningPrompt=n.buildNormalPlanningPrompt,exports.configurePlanningSubagentInput=r.configurePlanningSubagentInput,exports.configurePlanningTaskInput=r.configurePlanningTaskInput,exports.constrainSubagentInput=r.constrainSubagentInput,exports.containsSuspectedCredential=t.containsSuspectedCredential,exports.createFablePlanFlow=t.createFablePlanFlow,exports.createPlanIdentifier=r.createPlanIdentifier,exports.getHarnessState=i.getHarnessState,exports.globalDoomConfigPath=i.globalDoomConfigPath,exports.isBlockedSubagentManagementAction=r.isBlockedSubagentManagementAction,exports.loadDoomConfig=e.loadDoomConfig,exports.loadHarnessState=i.loadHarnessState,exports.loadPlanningModeConfig=r.loadPlanningModeConfig,exports.mergeDoomConfigs=e.mergeDoomConfigs,exports.parseDebugEvidencePacket=r.parseDebugEvidencePacket,exports.parseDoomConfig=e.parseDoomConfig,exports.parsePersistedPlanState=r.parsePersistedPlanState,exports.parsePlanningModeConfig=i.parsePlanningModeConfig,exports.planModeExtension=r.planModeExtension,exports.planModeTools=r.planModeTools,exports.planSessionIdentifier=r.planSessionIdentifier,exports.planTitleSlug=r.planTitleSlug,exports.planningSubagentModel=r.planningSubagentModel,exports.repositoryDoomConfigPath=i.repositoryDoomConfigPath,exports.resolvePlanningPlansDirectory=i.resolvePlanningPlansDirectory,exports.sanitizeFablePacket=t.sanitizeFablePacket,exports.visiblePlanForToolCall=r.visiblePlanForToolCall;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./_virtual/_rolldown/runtime.cjs`);const e=require(`./schemas/plan/config.cjs`),t=require(`./services/plan/fableFlow.cjs`),n=require(`./services/plan/prompts.cjs`),r=require(`./services/plan/planMode.cjs`);let i=require(`@agimon-ai/doompi-config`);exports.FABLE_PLAN_MODEL=t.FABLE_PLAN_MODEL,exports.FABLE_PLAN_PROFILE=t.FABLE_PLAN_PROFILE,exports.FABLE_PLAN_REQUESTER=t.FABLE_PLAN_REQUESTER,exports.FABLE_PLAN_RUNTIME=t.FABLE_PLAN_RUNTIME,exports.FABLE_PROVIDER_SOURCE=t.FABLE_PROVIDER_SOURCE,exports.MAX_FABLE_ARRAY_ITEMS=t.MAX_FABLE_ARRAY_ITEMS,exports.MAX_FABLE_PACKET_BYTES=t.MAX_FABLE_PACKET_BYTES,exports.MAX_FABLE_TEXT_BYTES=t.MAX_FABLE_TEXT_BYTES,exports.WRITE_PLAN_TIMEOUT_MS=r.WRITE_PLAN_TIMEOUT_MS,exports.buildDebugPlanningPrompt=n.buildDebugPlanningPrompt,exports.buildFablePlanningPrompt=n.buildFablePlanningPrompt,exports.buildFlavorPlanningPrompt=n.buildFlavorPlanningPrompt,exports.buildNormalPlanningPrompt=n.buildNormalPlanningPrompt,exports.configurePlanningSubagentInput=r.configurePlanningSubagentInput,exports.configurePlanningTaskInput=r.configurePlanningTaskInput,exports.constrainSubagentInput=r.constrainSubagentInput,exports.containsSuspectedCredential=t.containsSuspectedCredential,exports.createFablePlanFlow=t.createFablePlanFlow,exports.createPlanIdentifier=r.createPlanIdentifier,exports.getHarnessState=i.getHarnessState,exports.globalDoomConfigPath=i.globalDoomConfigPath,exports.isBlockedSubagentManagementAction=r.isBlockedSubagentManagementAction,exports.loadDoomConfig=e.loadDoomConfig,exports.loadHarnessState=i.loadHarnessState,exports.loadPlanningModeConfig=r.loadPlanningModeConfig,exports.mergeDoomConfigs=e.mergeDoomConfigs,exports.parseDebugEvidencePacket=r.parseDebugEvidencePacket,exports.parseDoomConfig=e.parseDoomConfig,exports.parsePersistedPlanState=r.parsePersistedPlanState,exports.parsePlanningModeConfig=i.parsePlanningModeConfig,exports.planModeExtension=r.planModeExtension,exports.planModeTools=r.planModeTools,exports.planSessionIdentifier=r.planSessionIdentifier,exports.planTitleSlug=r.planTitleSlug,exports.planningSubagentModel=r.planningSubagentModel,exports.repositoryDoomConfigPath=i.repositoryDoomConfigPath,exports.resolvePlanningPlansDirectory=i.resolvePlanningPlansDirectory,exports.sanitizeFablePacket=t.sanitizeFablePacket,exports.visiblePlanForToolCall=r.visiblePlanForToolCall;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "./config.cjs";
2
- import { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket } from "./fableFlow.cjs";
3
- import { DebugEvidencePacket, PlanningFlavor, buildDebugPlanningPrompt, buildFablePlanningPrompt, buildFlavorPlanningPrompt, buildNormalPlanningPrompt } from "./prompts.cjs";
4
- import { ModelIdentity, PlanModeExtensionOptions, PlanSnapshot, PlanningConfigProvider, WRITE_PLAN_TIMEOUT_MS, configurePlanningSubagentInput, configurePlanningTaskInput, constrainSubagentInput, createPlanIdentifier, isBlockedSubagentManagementAction, loadPlanningModeConfig, parseDebugEvidencePacket, parsePersistedPlanState, planModeExtension, planModeTools, planSessionIdentifier, planTitleSlug, planningSubagentModel, visiblePlanForToolCall } from "./planMode.cjs";
1
+ import { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "./schemas/plan/config.cjs";
2
+ import { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket } from "./services/plan/fableFlow.cjs";
3
+ import { DebugEvidencePacket, PlanningFlavor, buildDebugPlanningPrompt, buildFablePlanningPrompt, buildFlavorPlanningPrompt, buildNormalPlanningPrompt } from "./services/plan/prompts.cjs";
4
+ import { ModelIdentity, PlanModeExtensionOptions, PlanSnapshot, PlanningConfigProvider, WRITE_PLAN_TIMEOUT_MS, configurePlanningSubagentInput, configurePlanningTaskInput, constrainSubagentInput, createPlanIdentifier, isBlockedSubagentManagementAction, loadPlanningModeConfig, parseDebugEvidencePacket, parsePersistedPlanState, planModeExtension, planModeTools, planSessionIdentifier, planTitleSlug, planningSubagentModel, visiblePlanForToolCall } from "./services/plan/planMode.cjs";
5
5
  export { DebugEvidencePacket, DoomConfig, FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, ModelIdentity, PlanModeExtensionOptions, PlanSnapshot, PlanningAgentConfig, PlanningConfigProvider, PlanningFlavor, PlanningModeConfig, PlanningThinkingLevel, WRITE_PLAN_TIMEOUT_MS, buildDebugPlanningPrompt, buildFablePlanningPrompt, buildFlavorPlanningPrompt, buildNormalPlanningPrompt, configurePlanningSubagentInput, configurePlanningTaskInput, constrainSubagentInput, containsSuspectedCredential, createFablePlanFlow, createPlanIdentifier, getHarnessState, globalDoomConfigPath, isBlockedSubagentManagementAction, loadDoomConfig, loadHarnessState, loadPlanningModeConfig, mergeDoomConfigs, parseDebugEvidencePacket, parseDoomConfig, parsePersistedPlanState, parsePlanningModeConfig, planModeExtension, planModeTools, planSessionIdentifier, planTitleSlug, planningSubagentModel, repositoryDoomConfigPath, resolvePlanningPlansDirectory, sanitizeFablePacket, visiblePlanForToolCall };
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "./config.mjs";
2
- import { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket } from "./fableFlow.mjs";
3
- import { DebugEvidencePacket, PlanningFlavor, buildDebugPlanningPrompt, buildFablePlanningPrompt, buildFlavorPlanningPrompt, buildNormalPlanningPrompt } from "./prompts.mjs";
4
- import { ModelIdentity, PlanModeExtensionOptions, PlanSnapshot, PlanningConfigProvider, WRITE_PLAN_TIMEOUT_MS, configurePlanningSubagentInput, configurePlanningTaskInput, constrainSubagentInput, createPlanIdentifier, isBlockedSubagentManagementAction, loadPlanningModeConfig, parseDebugEvidencePacket, parsePersistedPlanState, planModeExtension, planModeTools, planSessionIdentifier, planTitleSlug, planningSubagentModel, visiblePlanForToolCall } from "./planMode.mjs";
1
+ import { DoomConfig, PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "./schemas/plan/config.mjs";
2
+ import { FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, containsSuspectedCredential, createFablePlanFlow, sanitizeFablePacket } from "./services/plan/fableFlow.mjs";
3
+ import { DebugEvidencePacket, PlanningFlavor, buildDebugPlanningPrompt, buildFablePlanningPrompt, buildFlavorPlanningPrompt, buildNormalPlanningPrompt } from "./services/plan/prompts.mjs";
4
+ import { ModelIdentity, PlanModeExtensionOptions, PlanSnapshot, PlanningConfigProvider, WRITE_PLAN_TIMEOUT_MS, configurePlanningSubagentInput, configurePlanningTaskInput, constrainSubagentInput, createPlanIdentifier, isBlockedSubagentManagementAction, loadPlanningModeConfig, parseDebugEvidencePacket, parsePersistedPlanState, planModeExtension, planModeTools, planSessionIdentifier, planTitleSlug, planningSubagentModel, visiblePlanForToolCall } from "./services/plan/planMode.mjs";
5
5
  export { DebugEvidencePacket, DoomConfig, FABLE_PLAN_MODEL, FABLE_PLAN_PROFILE, FABLE_PLAN_REQUESTER, FABLE_PLAN_RUNTIME, FABLE_PROVIDER_SOURCE, FableFlowOptions, FablePlanBroker, FablePlanFinding, FablePlanFlow, FablePlanPacket, FablePlanRequest, FablePlanResult, FablePlanStage, FablePlanStatus, FableStage, MAX_FABLE_ARRAY_ITEMS, MAX_FABLE_PACKET_BYTES, MAX_FABLE_TEXT_BYTES, ModelIdentity, PlanModeExtensionOptions, PlanSnapshot, PlanningAgentConfig, PlanningConfigProvider, PlanningFlavor, PlanningModeConfig, PlanningThinkingLevel, WRITE_PLAN_TIMEOUT_MS, buildDebugPlanningPrompt, buildFablePlanningPrompt, buildFlavorPlanningPrompt, buildNormalPlanningPrompt, configurePlanningSubagentInput, configurePlanningTaskInput, constrainSubagentInput, containsSuspectedCredential, createFablePlanFlow, createPlanIdentifier, getHarnessState, globalDoomConfigPath, isBlockedSubagentManagementAction, loadDoomConfig, loadHarnessState, loadPlanningModeConfig, mergeDoomConfigs, parseDebugEvidencePacket, parseDoomConfig, parsePersistedPlanState, parsePlanningModeConfig, planModeExtension, planModeTools, planSessionIdentifier, planTitleSlug, planningSubagentModel, repositoryDoomConfigPath, resolvePlanningPlansDirectory, sanitizeFablePacket, visiblePlanForToolCall };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{getHarnessState as e,globalDoomConfigPath as t,loadDoomConfig as n,loadHarnessState as r,mergeDoomConfigs as i,parseDoomConfig as a,parsePlanningModeConfig as o,repositoryDoomConfigPath as s,resolvePlanningPlansDirectory as c}from"./config.mjs";import{FABLE_PLAN_MODEL as l,FABLE_PLAN_PROFILE as u,FABLE_PLAN_REQUESTER as d,FABLE_PLAN_RUNTIME as f,FABLE_PROVIDER_SOURCE as p,MAX_FABLE_ARRAY_ITEMS as m,MAX_FABLE_PACKET_BYTES as h,MAX_FABLE_TEXT_BYTES as g,containsSuspectedCredential as _,createFablePlanFlow as v,sanitizeFablePacket as y}from"./fableFlow.mjs";import{buildDebugPlanningPrompt as b,buildFablePlanningPrompt as x,buildFlavorPlanningPrompt as S,buildNormalPlanningPrompt as C}from"./prompts.mjs";import{WRITE_PLAN_TIMEOUT_MS as w,configurePlanningSubagentInput as T,configurePlanningTaskInput as E,constrainSubagentInput as D,createPlanIdentifier as O,isBlockedSubagentManagementAction as k,loadPlanningModeConfig as A,parseDebugEvidencePacket as j,parsePersistedPlanState as M,planModeExtension as N,planModeTools as P,planSessionIdentifier as F,planTitleSlug as I,planningSubagentModel as L,visiblePlanForToolCall as R}from"./planMode.mjs";export{l as FABLE_PLAN_MODEL,u as FABLE_PLAN_PROFILE,d as FABLE_PLAN_REQUESTER,f as FABLE_PLAN_RUNTIME,p as FABLE_PROVIDER_SOURCE,m as MAX_FABLE_ARRAY_ITEMS,h as MAX_FABLE_PACKET_BYTES,g as MAX_FABLE_TEXT_BYTES,w as WRITE_PLAN_TIMEOUT_MS,b as buildDebugPlanningPrompt,x as buildFablePlanningPrompt,S as buildFlavorPlanningPrompt,C as buildNormalPlanningPrompt,T as configurePlanningSubagentInput,E as configurePlanningTaskInput,D as constrainSubagentInput,_ as containsSuspectedCredential,v as createFablePlanFlow,O as createPlanIdentifier,e as getHarnessState,t as globalDoomConfigPath,k as isBlockedSubagentManagementAction,n as loadDoomConfig,r as loadHarnessState,A as loadPlanningModeConfig,i as mergeDoomConfigs,j as parseDebugEvidencePacket,a as parseDoomConfig,M as parsePersistedPlanState,o as parsePlanningModeConfig,N as planModeExtension,P as planModeTools,F as planSessionIdentifier,I as planTitleSlug,L as planningSubagentModel,s as repositoryDoomConfigPath,c as resolvePlanningPlansDirectory,y as sanitizeFablePacket,R as visiblePlanForToolCall};
1
+ import{getHarnessState as e,globalDoomConfigPath as t,loadDoomConfig as n,loadHarnessState as r,mergeDoomConfigs as i,parseDoomConfig as a,parsePlanningModeConfig as o,repositoryDoomConfigPath as s,resolvePlanningPlansDirectory as c}from"./schemas/plan/config.mjs";import{FABLE_PLAN_MODEL as l,FABLE_PLAN_PROFILE as u,FABLE_PLAN_REQUESTER as d,FABLE_PLAN_RUNTIME as f,FABLE_PROVIDER_SOURCE as p,MAX_FABLE_ARRAY_ITEMS as m,MAX_FABLE_PACKET_BYTES as h,MAX_FABLE_TEXT_BYTES as g,containsSuspectedCredential as _,createFablePlanFlow as v,sanitizeFablePacket as y}from"./services/plan/fableFlow.mjs";import{buildDebugPlanningPrompt as b,buildFablePlanningPrompt as x,buildFlavorPlanningPrompt as S,buildNormalPlanningPrompt as C}from"./services/plan/prompts.mjs";import{WRITE_PLAN_TIMEOUT_MS as w,configurePlanningSubagentInput as T,configurePlanningTaskInput as E,constrainSubagentInput as D,createPlanIdentifier as O,isBlockedSubagentManagementAction as k,loadPlanningModeConfig as A,parseDebugEvidencePacket as j,parsePersistedPlanState as M,planModeExtension as N,planModeTools as P,planSessionIdentifier as F,planTitleSlug as I,planningSubagentModel as L,visiblePlanForToolCall as R}from"./services/plan/planMode.mjs";export{l as FABLE_PLAN_MODEL,u as FABLE_PLAN_PROFILE,d as FABLE_PLAN_REQUESTER,f as FABLE_PLAN_RUNTIME,p as FABLE_PROVIDER_SOURCE,m as MAX_FABLE_ARRAY_ITEMS,h as MAX_FABLE_PACKET_BYTES,g as MAX_FABLE_TEXT_BYTES,w as WRITE_PLAN_TIMEOUT_MS,b as buildDebugPlanningPrompt,x as buildFablePlanningPrompt,S as buildFlavorPlanningPrompt,C as buildNormalPlanningPrompt,T as configurePlanningSubagentInput,E as configurePlanningTaskInput,D as constrainSubagentInput,_ as containsSuspectedCredential,v as createFablePlanFlow,O as createPlanIdentifier,e as getHarnessState,t as globalDoomConfigPath,k as isBlockedSubagentManagementAction,n as loadDoomConfig,r as loadHarnessState,A as loadPlanningModeConfig,i as mergeDoomConfigs,j as parseDebugEvidencePacket,a as parseDoomConfig,M as parsePersistedPlanState,o as parsePlanningModeConfig,N as planModeExtension,P as planModeTools,F as planSessionIdentifier,I as planTitleSlug,L as planningSubagentModel,s as repositoryDoomConfigPath,c as resolvePlanningPlansDirectory,y as sanitizeFablePacket,R as visiblePlanForToolCall};