@agimon-ai/doompi-plan 0.0.1-alpha.28 → 0.0.1-alpha.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,13 @@
1
1
  # @agimon-ai/doompi-plan
2
2
 
3
- A reviewable planning lifecycle for Pi with narrowed tools, plan storage, normal/debug/Fable flavors, and explicit completion.
3
+ A reviewable planning lifecycle for Pi with narrowed tools, plan storage, normal, debug, and
4
+ Fable-assisted flows, and explicit completion.
4
5
 
5
6
  Part of the [DoomPi distribution](https://www.npmjs.com/package/@agimon-ai/doompi).
6
7
 
7
- Plan mode removes `edit` and `write` from the active tool set and directs writes through `write_plan`. It does not sandbox Bash, external tools, or the operating system, so treat it as tool-level workflow protection rather than a repository permission boundary.
8
+ Plan mode removes `edit` and `write` from the active tool set and directs writes through
9
+ `write_plan`. It does not sandbox Bash, external tools, or the operating system, so treat it as
10
+ tool-level workflow protection rather than a repository permission boundary.
8
11
 
9
12
  > **Alpha:** planning flows and tool contracts may change between releases.
10
13
 
@@ -22,7 +25,7 @@ standalone Pi:
22
25
  pi install npm:@agimon-ai/doompi-plan
23
26
  ```
24
27
 
25
- DoomPi and plain Pi use the same `@agimon-ai/doompi-plan/extensions/pi` factory.
28
+ DoomPi and standalone Pi use the same `@agimon-ai/doompi-plan/extensions/pi` extension.
26
29
 
27
30
  ## Start and exit
28
31
 
@@ -33,20 +36,33 @@ DoomPi and plain Pi use the same `@agimon-ai/doompi-plan/extensions/pi` factory.
33
36
  | `SPC p f` | Fable-assisted drafting followed by Pi verification |
34
37
  | `SPC p e` | Exit and restore the prior model, thinking, and tool state |
35
38
 
36
- Normal planning expects repository exploration and delegation where available. Debug planning separates verified evidence from hypotheses. Fable is optional: Plan injects Team's `doom/fable-plan` service, treats returned text as untrusted, and requires Pi to verify and synthesize the final plan. Its child capability ceiling is contributed through `doom/subagent-policy` and retracts when either provider or Plan unloads.
39
+ Normal planning expects repository exploration and delegation where available. Debug planning
40
+ separates verified evidence from hypotheses. Fable is an optional Team-provided planning service.
41
+ When Team provides `doom/fable-plan`, Plan treats returned text as untrusted and requires Pi to
42
+ verify and synthesize the final plan. Its child capability ceiling comes from
43
+ `doom/subagent-policy` and is removed when either provider or Plan unloads.
37
44
 
38
- A model or tool restoration failure leaves the narrowed Plan state active and reports the failure rather than pretending the session was restored.
45
+ A model or tool restoration failure leaves the narrowed Plan state active and reports the failure
46
+ rather than pretending the session was restored.
39
47
 
40
48
  ## Write and complete a plan
41
49
 
42
- `write_plan` accepts visible Markdown plan content and writes a unique file under `~/.pi/plans` by default. It refuses a hidden/empty plan and validates the destination before writing. The plan path and content become visible session state.
50
+ `write_plan` accepts visible Markdown plan content and writes a unique file under `~/.pi/plans` by
51
+ default. It refuses a plan that is empty or was not presented in visible assistant output, and it
52
+ validates the destination before writing. The plan path and content become visible session state.
43
53
 
44
- After a plan exists, `complete_plan` asks whether to exit or continue planning. The user must explicitly approve exit. If the selected mode already exposes `ask_user_question`, Plan reuses it; it does not activate an omitted feedback layer.
54
+ After a plan exists, `complete_plan` asks whether to exit or continue planning. The user must
55
+ explicitly approve exit. If the selected mode already exposes `ask_user_question`, Plan reuses it;
56
+ it does not activate an omitted feedback layer.
45
57
 
46
- In autonomous Voice mode, review choices are narrated, the turn terminates, and the next user message carries the decision.
58
+ In autonomous Voice mode, review choices are narrated, the turn terminates, and the next user
59
+ message carries the decision.
47
60
 
48
61
  ## Configure models and storage
49
62
 
63
+ Put planning settings in the repository's `.doom/config.yaml` or the global
64
+ `~/.pi/.doom/config.yaml`:
65
+
50
66
  ```yaml
51
67
  modes:
52
68
  planning:
@@ -59,11 +75,14 @@ modes:
59
75
  plansDirectory: ~/.pi/plans
60
76
  ```
61
77
 
62
- `main` controls the planning model, `subagents` controls delegated research defaults, and `plansDirectory` can be absolute, repository-relative, or under `~`. Planning and delegated model calls consume provider quota.
78
+ `main` controls the planning model, `subagents` controls delegated research defaults, and
79
+ `plansDirectory` can be absolute, repository-relative, or under `~`. Planning and delegated model
80
+ calls consume provider quota.
63
81
 
64
82
  ## Public API
65
83
 
66
- The root exports planning configuration schemas, prompts, Fable flow helpers, and the Plan mode service. Focused exports include `/config`, `/planConfig`, `/planMode`, `/fableFlow`, and `/prompts`.
84
+ The root exports planning configuration schemas, prompts, Fable flow helpers, and the Plan mode
85
+ service. Focused exports include `/config`, `/planConfig`, `/planMode`, `/fableFlow`, and `/prompts`.
67
86
 
68
87
  ## Development
69
88
 
@@ -1,2 +1,2 @@
1
- const e=require("../../services/planMode.cjs");let t=require("@agimon-ai/doompi-extension-contracts/cordis-host");function n(t,n){e.planModeExtension(t,n)}async function r(e){let n=await(0,t.connectDoomCordisHost)(e,`@agimon-ai/doompi-plan`),r=n.root.plugin(i,{pi:e});try{await r}catch(e){try{await r.dispose()}finally{await n.dispose()}throw e}let a;e.on(`session_shutdown`,()=>a??=(async()=>{try{await r.dispose()}finally{await n.dispose()}})())}function i(e,t){n(e,t.pi)}exports.activatePlanExtension=r,exports.default=r,exports.installPlanRuntime=n;
1
+ const e=require("../../services/planMode.cjs");let t=require("@agimon-ai/doompi-extension-contracts/cordis-host"),n=require("@agimon-ai/doompi-extension-contracts/help");const r=`@agimon-ai/doompi-plan`;function i(t,n){e.planModeExtension(t,n)}async function a(e){let n=await(0,t.connectDoomCordisHost)(e,r),i=n.root.plugin(o,{pi:e});try{await i}catch(e){try{await i.dispose()}finally{await n.dispose()}throw e}let a;e.on(`session_shutdown`,()=>a??=(async()=>{try{await i.dispose()}finally{await n.dispose()}})())}function o(e,t){e.inject([n.DOOM_HELP_SERVICE],e=>{let t=(0,n.requireDoomHelpService)(e).register({source:r,moduleUrl:require("url").pathToFileURL(__filename).href,skills:[{name:`doompi-use-plan`,description:`Use Doom Pi Plan to draft reviewable normal, debug, or Fable-assisted plans, persist them, and exit safely.`}]});return()=>t.dispose()}),i(e,t.pi)}exports.activatePlanExtension=a,exports.default=a,exports.installPlanRuntime=i;
2
2
  //# sourceMappingURL=extension.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.cjs","names":["connectDoomCordisHost"],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { connectDoomCordisHost } from '@agimon-ai/doompi-extension-contracts/cordis-host';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { planModeExtension } from '../../services/planMode.ts';\n\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-plan';\n\n/** Install Plan state and external resources into its host-owned Cordis plugin fiber. */\nexport function installPlanRuntime(cordis: Context, pi: ExtensionAPI): void {\n planModeExtension(cordis, pi);\n}\n\n/** The package's single standard Pi factory, including all optional typed Doom integrations. */\nexport async function activatePlanExtension(pi: ExtensionAPI): Promise<void> {\n const connection = await connectDoomCordisHost(pi, PACKAGE_SOURCE);\n const fiber = connection.root.plugin(planPlugin, { pi });\n try {\n await fiber;\n } catch (error) {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n throw error;\n }\n let disposal: Promise<void> | undefined;\n pi.on(\n 'session_shutdown',\n () =>\n (disposal ??= (async () => {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n })()),\n );\n}\n\ninterface PlanPluginConfig {\n readonly pi: ExtensionAPI;\n}\n\nfunction planPlugin(cordis: Context, config: PlanPluginConfig): void {\n installPlanRuntime(cordis, config.pi);\n}\n\nexport default activatePlanExtension;\n"],"mappings":"kHAQA,SAAgB,EAAmB,EAAiB,EAAwB,CAC1E,EAAA,kBAAkB,EAAQ,CAAE,CAC9B,CAGA,eAAsB,EAAsB,EAAiC,CAC3E,IAAM,EAAa,MAAA,EAAMA,EAAAA,sBAAAA,CAAsB,EAAI,wBAAc,EAC3D,EAAQ,EAAW,KAAK,OAAO,EAAY,CAAE,IAAG,CAAC,EACvD,GAAI,CACF,MAAM,CACR,OAAS,EAAO,CACd,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACA,MAAM,CACR,CACA,IAAI,EACJ,EAAG,GACD,uBAEG,KAAc,SAAY,CACzB,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACF,EAAA,CAAG,CACP,CACF,CAMA,SAAS,EAAW,EAAiB,EAAgC,CACnE,EAAmB,EAAQ,EAAO,EAAE,CACtC"}
1
+ {"version":3,"file":"extension.cjs","names":["connectDoomCordisHost","DOOM_HELP_SERVICE","requireDoomHelpService"],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { connectDoomCordisHost } from '@agimon-ai/doompi-extension-contracts/cordis-host';\nimport { DOOM_HELP_SERVICE, requireDoomHelpService } from '@agimon-ai/doompi-extension-contracts/help';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { planModeExtension } from '../../services/planMode.ts';\n\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-plan';\n\n/** Install Plan state and external resources into its host-owned Cordis plugin fiber. */\nexport function installPlanRuntime(cordis: Context, pi: ExtensionAPI): void {\n planModeExtension(cordis, pi);\n}\n\n/** The package's single standard Pi factory, including all optional typed Doom integrations. */\nexport async function activatePlanExtension(pi: ExtensionAPI): Promise<void> {\n const connection = await connectDoomCordisHost(pi, PACKAGE_SOURCE);\n const fiber = connection.root.plugin(planPlugin, { pi });\n try {\n await fiber;\n } catch (error) {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n throw error;\n }\n let disposal: Promise<void> | undefined;\n pi.on(\n 'session_shutdown',\n () =>\n (disposal ??= (async () => {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n })()),\n );\n}\n\ninterface PlanPluginConfig {\n readonly pi: ExtensionAPI;\n}\n\nfunction planPlugin(cordis: Context, config: PlanPluginConfig): void {\n cordis.inject([DOOM_HELP_SERVICE], (helpContext) => {\n const contribution = requireDoomHelpService(helpContext).register({\n source: PACKAGE_SOURCE,\n moduleUrl: import.meta.url,\n skills: [\n {\n name: 'doompi-use-plan',\n description:\n 'Use Doom Pi Plan to draft reviewable normal, debug, or Fable-assisted plans, persist them, and exit safely.',\n },\n ],\n });\n return () => contribution.dispose();\n });\n installPlanRuntime(cordis, config.pi);\n}\n\nexport default activatePlanExtension;\n"],"mappings":"0KAMA,MAAM,EAAiB,yBAGvB,SAAgB,EAAmB,EAAiB,EAAwB,CAC1E,EAAA,kBAAkB,EAAQ,CAAE,CAC9B,CAGA,eAAsB,EAAsB,EAAiC,CAC3E,IAAM,EAAa,MAAA,EAAMA,EAAAA,sBAAAA,CAAsB,EAAI,CAAc,EAC3D,EAAQ,EAAW,KAAK,OAAO,EAAY,CAAE,IAAG,CAAC,EACvD,GAAI,CACF,MAAM,CACR,OAAS,EAAO,CACd,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACA,MAAM,CACR,CACA,IAAI,EACJ,EAAG,GACD,uBAEG,KAAc,SAAY,CACzB,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACF,EAAA,CAAG,CACP,CACF,CAMA,SAAS,EAAW,EAAiB,EAAgC,CACnE,EAAO,OAAO,CAACC,EAAAA,iBAAiB,EAAI,GAAgB,CAClD,IAAM,GAAA,EAAeC,EAAAA,uBAAAA,CAAuB,CAAW,CAAC,CAAC,SAAS,CAChE,OAAQ,EACR,UAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,KACA,OAAQ,CACN,CACE,KAAM,kBACN,YACE,6GACJ,CACF,CACF,CAAC,EACD,UAAa,EAAa,QAAQ,CACpC,CAAC,EACD,EAAmB,EAAQ,EAAO,EAAE,CACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.cts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAasB,sBAAsB,IAAI,eAAe"}
1
+ {"version":3,"file":"extension.d.cts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAcsB,sBAAsB,IAAI,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.mts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAasB,sBAAsB,IAAI,eAAe"}
1
+ {"version":3,"file":"extension.d.mts","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"mappings":";;;;iBAcsB,sBAAsB,IAAI,eAAe"}
@@ -1,2 +1,2 @@
1
- import{planModeExtension as e}from"../../services/planMode.mjs";import{connectDoomCordisHost as t}from"@agimon-ai/doompi-extension-contracts/cordis-host";function n(t,n){e(t,n)}async function r(e){let n=await t(e,`@agimon-ai/doompi-plan`),r=n.root.plugin(i,{pi:e});try{await r}catch(e){try{await r.dispose()}finally{await n.dispose()}throw e}let a;e.on(`session_shutdown`,()=>a??=(async()=>{try{await r.dispose()}finally{await n.dispose()}})())}function i(e,t){n(e,t.pi)}export{r as activatePlanExtension,r as default,n as installPlanRuntime};
1
+ import{planModeExtension as e}from"../../services/planMode.mjs";import{connectDoomCordisHost as t}from"@agimon-ai/doompi-extension-contracts/cordis-host";import{DOOM_HELP_SERVICE as n,requireDoomHelpService as r}from"@agimon-ai/doompi-extension-contracts/help";const i=`@agimon-ai/doompi-plan`;function a(t,n){e(t,n)}async function o(e){let n=await t(e,i),r=n.root.plugin(s,{pi:e});try{await r}catch(e){try{await r.dispose()}finally{await n.dispose()}throw e}let a;e.on(`session_shutdown`,()=>a??=(async()=>{try{await r.dispose()}finally{await n.dispose()}})())}function s(e,t){e.inject([n],e=>{let t=r(e).register({source:i,moduleUrl:import.meta.url,skills:[{name:`doompi-use-plan`,description:`Use Doom Pi Plan to draft reviewable normal, debug, or Fable-assisted plans, persist them, and exit safely.`}]});return()=>t.dispose()}),a(e,t.pi)}export{o as activatePlanExtension,o as default,a as installPlanRuntime};
2
2
  //# sourceMappingURL=extension.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.mjs","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { connectDoomCordisHost } from '@agimon-ai/doompi-extension-contracts/cordis-host';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { planModeExtension } from '../../services/planMode.ts';\n\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-plan';\n\n/** Install Plan state and external resources into its host-owned Cordis plugin fiber. */\nexport function installPlanRuntime(cordis: Context, pi: ExtensionAPI): void {\n planModeExtension(cordis, pi);\n}\n\n/** The package's single standard Pi factory, including all optional typed Doom integrations. */\nexport async function activatePlanExtension(pi: ExtensionAPI): Promise<void> {\n const connection = await connectDoomCordisHost(pi, PACKAGE_SOURCE);\n const fiber = connection.root.plugin(planPlugin, { pi });\n try {\n await fiber;\n } catch (error) {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n throw error;\n }\n let disposal: Promise<void> | undefined;\n pi.on(\n 'session_shutdown',\n () =>\n (disposal ??= (async () => {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n })()),\n );\n}\n\ninterface PlanPluginConfig {\n readonly pi: ExtensionAPI;\n}\n\nfunction planPlugin(cordis: Context, config: PlanPluginConfig): void {\n installPlanRuntime(cordis, config.pi);\n}\n\nexport default activatePlanExtension;\n"],"mappings":"0JAQA,SAAgB,EAAmB,EAAiB,EAAwB,CAC1E,EAAkB,EAAQ,CAAE,CAC9B,CAGA,eAAsB,EAAsB,EAAiC,CAC3E,IAAM,EAAa,MAAM,EAAsB,EAAI,wBAAc,EAC3D,EAAQ,EAAW,KAAK,OAAO,EAAY,CAAE,IAAG,CAAC,EACvD,GAAI,CACF,MAAM,CACR,OAAS,EAAO,CACd,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACA,MAAM,CACR,CACA,IAAI,EACJ,EAAG,GACD,uBAEG,KAAc,SAAY,CACzB,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACF,EAAA,CAAG,CACP,CACF,CAMA,SAAS,EAAW,EAAiB,EAAgC,CACnE,EAAmB,EAAQ,EAAO,EAAE,CACtC"}
1
+ {"version":3,"file":"extension.mjs","names":[],"sources":["../../../src/adapters/pi/extension.ts"],"sourcesContent":["import { connectDoomCordisHost } from '@agimon-ai/doompi-extension-contracts/cordis-host';\nimport { DOOM_HELP_SERVICE, requireDoomHelpService } from '@agimon-ai/doompi-extension-contracts/help';\nimport type { Context } from '@deepseek-ai/cordis';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\nimport { planModeExtension } from '../../services/planMode.ts';\n\nconst PACKAGE_SOURCE = '@agimon-ai/doompi-plan';\n\n/** Install Plan state and external resources into its host-owned Cordis plugin fiber. */\nexport function installPlanRuntime(cordis: Context, pi: ExtensionAPI): void {\n planModeExtension(cordis, pi);\n}\n\n/** The package's single standard Pi factory, including all optional typed Doom integrations. */\nexport async function activatePlanExtension(pi: ExtensionAPI): Promise<void> {\n const connection = await connectDoomCordisHost(pi, PACKAGE_SOURCE);\n const fiber = connection.root.plugin(planPlugin, { pi });\n try {\n await fiber;\n } catch (error) {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n throw error;\n }\n let disposal: Promise<void> | undefined;\n pi.on(\n 'session_shutdown',\n () =>\n (disposal ??= (async () => {\n try {\n await fiber.dispose();\n } finally {\n await connection.dispose();\n }\n })()),\n );\n}\n\ninterface PlanPluginConfig {\n readonly pi: ExtensionAPI;\n}\n\nfunction planPlugin(cordis: Context, config: PlanPluginConfig): void {\n cordis.inject([DOOM_HELP_SERVICE], (helpContext) => {\n const contribution = requireDoomHelpService(helpContext).register({\n source: PACKAGE_SOURCE,\n moduleUrl: import.meta.url,\n skills: [\n {\n name: 'doompi-use-plan',\n description:\n 'Use Doom Pi Plan to draft reviewable normal, debug, or Fable-assisted plans, persist them, and exit safely.',\n },\n ],\n });\n return () => contribution.dispose();\n });\n installPlanRuntime(cordis, config.pi);\n}\n\nexport default activatePlanExtension;\n"],"mappings":"qQAMA,MAAM,EAAiB,yBAGvB,SAAgB,EAAmB,EAAiB,EAAwB,CAC1E,EAAkB,EAAQ,CAAE,CAC9B,CAGA,eAAsB,EAAsB,EAAiC,CAC3E,IAAM,EAAa,MAAM,EAAsB,EAAI,CAAc,EAC3D,EAAQ,EAAW,KAAK,OAAO,EAAY,CAAE,IAAG,CAAC,EACvD,GAAI,CACF,MAAM,CACR,OAAS,EAAO,CACd,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACA,MAAM,CACR,CACA,IAAI,EACJ,EAAG,GACD,uBAEG,KAAc,SAAY,CACzB,GAAI,CACF,MAAM,EAAM,QAAQ,CACtB,QAAU,CACR,MAAM,EAAW,QAAQ,CAC3B,CACF,EAAA,CAAG,CACP,CACF,CAMA,SAAS,EAAW,EAAiB,EAAgC,CACnE,EAAO,OAAO,CAAC,CAAiB,EAAI,GAAgB,CAClD,IAAM,EAAe,EAAuB,CAAW,CAAC,CAAC,SAAS,CAChE,OAAQ,EACR,UAAW,YAAY,IACvB,OAAQ,CACN,CACE,KAAM,kBACN,YACE,6GACJ,CACF,CACF,CAAC,EACD,UAAa,EAAa,QAAQ,CACpC,CAAC,EACD,EAAmB,EAAQ,EAAO,EAAE,CACtC"}
package/llms.txt ADDED
@@ -0,0 +1,9 @@
1
+ # Doom Pi Plan
2
+
3
+ ## Resources
4
+
5
+ - [Package README](./README.md): Planning flavors, review flow, model configuration, storage, and safety boundaries.
6
+
7
+ ## How to use
8
+
9
+ - [doompi-use-plan](./src/prompts/doompi-use-plan/SKILL.md): Draft reviewable normal, debug, or Fable-assisted plans, persist them, and exit safely.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agimon-ai/doompi-plan",
3
- "version": "0.0.1-alpha.28",
3
+ "version": "0.0.1-alpha.29",
4
4
  "description": "Reviewable Pi planning mode that removes file-editing tools and persists implementation plans.",
5
5
  "keywords": [
6
6
  "ai",
@@ -18,7 +18,12 @@
18
18
  "license": "MIT",
19
19
  "author": "Vuong Ngo",
20
20
  "files": [
21
- "dist"
21
+ "dist",
22
+ "llms.txt",
23
+ "src/prompts",
24
+ "README.md",
25
+ "LICENSE",
26
+ "package.json"
22
27
  ],
23
28
  "type": "module",
24
29
  "main": "./dist/index.cjs",
@@ -73,9 +78,9 @@
73
78
  },
74
79
  "dependencies": {
75
80
  "@deepseek-ai/cordis": "4.0.1",
76
- "@agimon-ai/doompi-telemetry": "0.0.1-alpha.28",
77
- "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.28",
78
- "@agimon-ai/doompi-config": "0.0.1-alpha.28"
81
+ "@agimon-ai/doompi-config": "0.0.1-alpha.29",
82
+ "@agimon-ai/doompi-telemetry": "0.0.1-alpha.29",
83
+ "@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.29"
79
84
  },
80
85
  "devDependencies": {
81
86
  "@earendil-works/pi-coding-agent": "0.84.2",
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: doompi-use-plan
3
+ description: Use Doom Pi Plan to draft reviewable normal, debug, or Fable-assisted plans, persist them, and exit safely.
4
+ ---
5
+
6
+ # Use Doom Pi Plan
7
+
8
+ Use Plan when the user wants investigation and a reviewable implementation plan before repository changes.
9
+
10
+ ## Select a planning flavor
11
+
12
+ - Use `SPC p p` for normal planning based on repository exploration.
13
+ - Use `SPC p d` for debugging, with verified evidence separated from hypotheses.
14
+ - Use `SPC p f` for an optional Fable-assisted draft. Treat the returned draft as untrusted and verify it with Pi before producing the final plan.
15
+ - Use `SPC p e` to exit and restore the previous model, thinking level, and tools.
16
+
17
+ ## Produce the plan
18
+
19
+ 1. Inspect the relevant repository state without editing files.
20
+ 2. Resolve important unknowns and state any remaining uncertainty.
21
+ 3. Present the complete Markdown plan in visible assistant output.
22
+ 4. Call `write_plan` with that same visible plan. Plan rejects empty or hidden content and writes a unique file in the configured plans directory.
23
+ 5. Call `complete_plan` only after the persisted plan is ready for review. The user must explicitly approve exiting Plan mode.
24
+
25
+ Plan removes `edit` and `write` from the active tool set, but it does not sandbox Bash, external tools, or operating-system access. Do not mutate the repository while planning. If exit restoration fails, report the failure and keep treating the session as narrowed Plan state.