@agimon-ai/doompi-plan 0.0.1-alpha.96 → 0.0.1-alpha.98
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 +11 -8
- package/dist/extensions/mcp-ui.mjs +0 -11
- package/dist/extensions/mcp-ui.mjs.map +1 -1
- package/dist/extensions/mcp.cjs +1 -5
- package/dist/extensions/mcp.cjs.map +1 -1
- package/dist/extensions/mcp.d.mts.map +1 -1
- package/dist/extensions/mcp.mjs +1 -5
- package/dist/extensions/mcp.mjs.map +1 -1
- package/dist/extensions/pi.cjs +4 -8
- package/dist/extensions/pi.cjs.map +1 -1
- package/dist/extensions/pi.d.mts.map +1 -1
- package/dist/extensions/pi.mjs +4 -8
- package/dist/extensions/pi.mjs.map +1 -1
- package/dist/extensions/server.cjs +12 -55
- package/dist/extensions/server.cjs.map +1 -1
- package/dist/extensions/server.d.mts.map +1 -1
- package/dist/extensions/server.mjs +12 -55
- package/dist/extensions/server.mjs.map +1 -1
- package/dist/{index-svs1oI26.d.mts → index-C9QBG9cw.d.mts} +7 -8
- package/dist/index-C9QBG9cw.d.mts.map +1 -0
- package/dist/{index-NVQtqXSM.d.mts → index-Dq4TZq_R.d.mts} +5 -4
- package/dist/index-Dq4TZq_R.d.mts.map +1 -0
- package/dist/index.cjs +3 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +3 -3
- package/dist/{planMode-D8UGqbWB.cjs → planMode-Cmw5BU17.cjs} +27 -193
- package/dist/planMode-Cmw5BU17.cjs.map +1 -0
- package/dist/{planMode-DROtM7Ha.mjs → planMode-CsQds1DJ.mjs} +27 -193
- package/dist/planMode-CsQds1DJ.mjs.map +1 -0
- package/dist/planMode.cjs +1 -1
- package/dist/planMode.d.mts +2 -2
- package/dist/planMode.mjs +1 -1
- package/dist/{prompts-Dere4Q0Z.cjs → prompts-DUVUPNZd.cjs} +15 -8
- package/dist/prompts-DUVUPNZd.cjs.map +1 -0
- package/dist/{prompts-2tIN8Ulh.mjs → prompts-DnVJGtEC.mjs} +10 -9
- package/dist/prompts-DnVJGtEC.mjs.map +1 -0
- package/dist/prompts.cjs +2 -1
- package/dist/prompts.d.mts +2 -2
- package/dist/prompts.mjs +2 -2
- package/llms.txt +1 -1
- package/package.json +8 -9
- package/src/prompts/doompi-use-plan/SKILL.md +7 -4
- package/dist/index-NVQtqXSM.d.mts.map +0 -1
- package/dist/index-svs1oI26.d.mts.map +0 -1
- package/dist/planMode-D8UGqbWB.cjs.map +0 -1
- package/dist/planMode-DROtM7Ha.mjs.map +0 -1
- package/dist/prompts-2tIN8Ulh.mjs.map +0 -1
- package/dist/prompts-Dere4Q0Z.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @agimon-ai/doompi-plan
|
|
2
2
|
|
|
3
|
-
Create and review stored plans in Pi with file edits withheld, explicit completion, and normal, debug, or
|
|
3
|
+
Create and review stored plans in Pi with file edits withheld, explicit completion, and normal, debug, or code review flows.
|
|
4
4
|
|
|
5
5
|
Part of the [DoomPi distribution](https://www.npmjs.com/package/@agimon-ai/doompi).
|
|
6
6
|
|
|
@@ -34,16 +34,18 @@ DoomPi and standalone Pi use the same `@agimon-ai/doompi-plan/extensions/pi` ext
|
|
|
34
34
|
| --------- | ------------------------------------------------------ |
|
|
35
35
|
| `SPC p e` | Normal planning, and the way out once any flavor is on |
|
|
36
36
|
| `SPC p d` | Debug planning with a bounded evidence packet |
|
|
37
|
-
| `SPC p
|
|
37
|
+
| `SPC p r` | Code Review planning with findings and proposed fixes |
|
|
38
38
|
|
|
39
39
|
`SPC p e` reads `enter` while the mode is off and `exit` while it is on, where exiting restores the
|
|
40
40
|
prior model, thinking level, and tool state.
|
|
41
41
|
|
|
42
42
|
Normal planning expects repository exploration and delegation where available. Debug planning
|
|
43
|
-
separates verified evidence from hypotheses.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
separates verified evidence from hypotheses. Code Review planning inspects changes read-only,
|
|
44
|
+
reports actionable findings with severity and file references, and proposes scoped fixes with
|
|
45
|
+
validation steps. All three flavors use the same stored-plan and explicit approval workflow.
|
|
46
|
+
Saved Fable sessions resume as normal planning while retaining their original model settings.
|
|
47
|
+
The child capability ceiling comes from `doom/subagent-policy` and is removed when either
|
|
48
|
+
provider or Plan unloads.
|
|
47
49
|
|
|
48
50
|
A model restoration failure leaves Plan active and reports the failure rather than pretending
|
|
49
51
|
the session was restored.
|
|
@@ -102,8 +104,9 @@ calls consume provider quota.
|
|
|
102
104
|
|
|
103
105
|
## Public API
|
|
104
106
|
|
|
105
|
-
The root exports planning configuration schemas, prompts,
|
|
106
|
-
|
|
107
|
+
The root exports planning configuration schemas, prompts, and the Plan mode service.
|
|
108
|
+
Legacy Fable helpers remain exported for compatibility but are not registered as planning modes or tools.
|
|
109
|
+
Focused exports include `/config`, `/planConfig`, `/planMode`, `/fableFlow`, and `/prompts`.
|
|
107
110
|
The session-scoped server plugin owns the cockpit plan API. Pi and server entries live in
|
|
108
111
|
`src/extensions`; their public modules are `/extensions/pi` and `/extensions/server`.
|
|
109
112
|
Controllers compose tools and services. Services live in named folders, and `src/exports`
|
|
@@ -25,16 +25,6 @@ function RecordDebugEvidenceMcpWidget(props) {
|
|
|
25
25
|
}
|
|
26
26
|
var record_debug_evidence_mcp_default = defineMcpWidget(RecordDebugEvidenceMcpWidget);
|
|
27
27
|
//#endregion
|
|
28
|
-
//#region src/extensions/workspaces/sessions/(frontend)/tool/run_fable_plan.mcp.tsx
|
|
29
|
-
function RunFablePlanMcpWidget(props) {
|
|
30
|
-
return /* @__PURE__ */ jsxs(McpToolFrame, {
|
|
31
|
-
...props,
|
|
32
|
-
title: "Prepare plan",
|
|
33
|
-
children: [/* @__PURE__ */ jsx(McpToolFields, { fields: [["Goals", props.args.goal], ["Constraints", props.args.constraints]] }), /* @__PURE__ */ jsx(McpToolOutput, { result: props.result })]
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
var run_fable_plan_mcp_default = defineMcpWidget(RunFablePlanMcpWidget);
|
|
37
|
-
//#endregion
|
|
38
28
|
//#region src/extensions/workspaces/sessions/(frontend)/tool/write_plan.mcp.tsx
|
|
39
29
|
function WritePlanMcpWidget(props) {
|
|
40
30
|
return /* @__PURE__ */ jsxs(McpToolFrame, {
|
|
@@ -48,7 +38,6 @@ function WritePlanMcpWidget(props) {
|
|
|
48
38
|
const widgets = {
|
|
49
39
|
"@agimon-ai/doompi-plan/complete_plan": complete_plan_mcp_default,
|
|
50
40
|
"@agimon-ai/doompi-plan/record_debug_evidence": record_debug_evidence_mcp_default,
|
|
51
|
-
"@agimon-ai/doompi-plan/run_fable_plan": run_fable_plan_mcp_default,
|
|
52
41
|
"@agimon-ai/doompi-plan/write_plan": defineMcpWidget(WritePlanMcpWidget)
|
|
53
42
|
};
|
|
54
43
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-ui.mjs","names":["Widget0","Widget1","Widget2"
|
|
1
|
+
{"version":3,"file":"mcp-ui.mjs","names":["Widget0","Widget1","Widget2"],"sources":["../../src/extensions/workspaces/sessions/(frontend)/tool/complete_plan.mcp.tsx","../../src/extensions/workspaces/sessions/(frontend)/tool/record_debug_evidence.mcp.tsx","../../src/extensions/workspaces/sessions/(frontend)/tool/write_plan.mcp.tsx","../../generated/mcp-ui.ts"],"sourcesContent":["import { defineMcpWidget, type DoomMcpWidgetProps } from '@agimon-ai/doompi-core/web';\nimport { McpToolFrame, McpToolOutput } from '@agimon-ai/doompi-web-components';\n\nfunction CompletePlanMcpWidget(props: DoomMcpWidgetProps) {\n return (\n <McpToolFrame {...props} title=\"Request plan approval\">\n <McpToolOutput result={props.result} />\n </McpToolFrame>\n );\n}\n\nexport default defineMcpWidget(CompletePlanMcpWidget);\n","import { defineMcpWidget, type DoomMcpWidgetProps } from '@agimon-ai/doompi-core/web';\nimport { McpToolFrame, McpToolFields, McpToolOutput } from '@agimon-ai/doompi-web-components';\n\nfunction RecordDebugEvidenceMcpWidget(props: DoomMcpWidgetProps) {\n return (\n <McpToolFrame {...props} title=\"Record debug evidence\">\n <McpToolFields\n fields={[\n ['Issue', props.args.issue],\n ['Expected behavior', props.args.expectedBehavior],\n ['Observed behavior', props.args.actualBehavior],\n ]}\n />\n <McpToolOutput result={props.result} />\n </McpToolFrame>\n );\n}\n\nexport default defineMcpWidget(RecordDebugEvidenceMcpWidget);\n","import { defineMcpWidget, type DoomMcpWidgetProps } from '@agimon-ai/doompi-core/web';\nimport { McpToolFrame, McpToolFields, McpToolOutput } from '@agimon-ai/doompi-web-components';\n\nfunction WritePlanMcpWidget(props: DoomMcpWidgetProps) {\n return (\n <McpToolFrame {...props} title=\"Save plan\">\n <McpToolFields\n fields={[['Characters', typeof props.args.markdown === 'string' ? props.args.markdown.length : undefined]]}\n />\n <McpToolOutput result={props.result} />\n </McpToolFrame>\n );\n}\n\nexport default defineMcpWidget(WritePlanMcpWidget);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport type { ComponentType } from 'react';\nimport type { DoomMcpWidgetProps } from '@agimon-ai/doompi-core/mcpWidget';\nimport Widget0 from \"../src/extensions/workspaces/sessions/(frontend)/tool/complete_plan.mcp\";\nimport Widget1 from \"../src/extensions/workspaces/sessions/(frontend)/tool/record_debug_evidence.mcp\";\nimport Widget2 from \"../src/extensions/workspaces/sessions/(frontend)/tool/write_plan.mcp\";\n\nexport const widgets: Readonly<Record<string, ComponentType<DoomMcpWidgetProps>>> = {\n \"@agimon-ai/doompi-plan/complete_plan\": Widget0,\n \"@agimon-ai/doompi-plan/record_debug_evidence\": Widget1,\n \"@agimon-ai/doompi-plan/write_plan\": Widget2,\n};\n"],"mappings":";;;;AAGA,SAAS,sBAAsB,OAA2B;CACxD,OACE,oBAAC,cAAD;EAAc,GAAI;EAAO,OAAM;EAC7B,UAAA,oBAAC,eAAD,EAAe,QAAQ,MAAM,OAAS,CAAA;CAC1B,CAAA;AAElB;AAEA,IAAA,4BAAe,gBAAgB,qBAAqB;;;ACRpD,SAAS,6BAA6B,OAA2B;CAC/D,OACE,qBAAC,cAAD;EAAc,GAAI;EAAO,OAAM;EAA/B,UAAA,CACE,oBAAC,eAAD,EACE,QAAQ;GACN,CAAC,SAAS,MAAM,KAAK,KAAK;GAC1B,CAAC,qBAAqB,MAAM,KAAK,gBAAgB;GACjD,CAAC,qBAAqB,MAAM,KAAK,cAAc;EACjD,EACD,CAAA,GACD,oBAAC,eAAD,EAAe,QAAQ,MAAM,OAAS,CAAA,CAC1B;;AAElB;AAEA,IAAA,oCAAe,gBAAgB,4BAA4B;;;ACf3D,SAAS,mBAAmB,OAA2B;CACrD,OACE,qBAAC,cAAD;EAAc,GAAI;EAAO,OAAM;EAA/B,UAAA,CACE,oBAAC,eAAD,EACE,QAAQ,CAAC,CAAC,cAAc,OAAO,MAAM,KAAK,aAAa,WAAW,MAAM,KAAK,SAAS,SAAS,KAAA,CAAS,CAAC,EAC1G,CAAA,GACD,oBAAC,eAAD,EAAe,QAAQ,MAAM,OAAS,CAAA,CAC1B;;AAElB;;;ACLA,MAAa,UAAuE;CAClF,wCAAwCA;CACxC,gDAAgDC;CAChD,qCDIa,gBAAgB,kBCJQC;AACvC"}
|
package/dist/extensions/mcp.cjs
CHANGED
|
@@ -8,7 +8,7 @@ let typebox = require("typebox");
|
|
|
8
8
|
//#region src/extensions/workspaces/sessions/(backend)/skill/doompi-use-plan.mcp.ts
|
|
9
9
|
var doompi_use_plan_mcp_default = (0, _agimon_ai_doompi_core_mcpFacet.defineMcpSkill)({
|
|
10
10
|
name: "doompi-use-plan",
|
|
11
|
-
description: "Use Doom Pi Plan to draft reviewable normal, debug, or
|
|
11
|
+
description: "Use Doom Pi Plan to draft reviewable normal, debug, or code review plans, persist them, and exit safely.",
|
|
12
12
|
read: () => (0, _agimon_ai_doompi_core_serverFacet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/doompi-use-plan/SKILL.md")
|
|
13
13
|
});
|
|
14
14
|
//#endregion
|
|
@@ -55,9 +55,6 @@ var complete_plan_mcp_default = (0, _agimon_ai_doompi_core_mcpFacet.defineMcpToo
|
|
|
55
55
|
//#region src/extensions/workspaces/sessions/(backend)/tool/record_debug_evidence.mcp.ts
|
|
56
56
|
var record_debug_evidence_mcp_default = (0, _agimon_ai_doompi_core_mcpFacet.defineMcpTool)((context) => bindMcpTool(context, "record_debug_evidence"));
|
|
57
57
|
//#endregion
|
|
58
|
-
//#region src/extensions/workspaces/sessions/(backend)/tool/run_fable_plan.mcp.ts
|
|
59
|
-
var run_fable_plan_mcp_default = (0, _agimon_ai_doompi_core_mcpFacet.defineMcpTool)((context) => bindMcpTool(context, "run_fable_plan"));
|
|
60
|
-
//#endregion
|
|
61
58
|
//#region src/extensions/workspaces/sessions/(backend)/tool/write_plan.mcp.ts
|
|
62
59
|
var write_plan_mcp_default = (0, _agimon_ai_doompi_core_mcpFacet.defineMcpTool)((context) => bindMcpTool(context, "write_plan"));
|
|
63
60
|
//#endregion
|
|
@@ -84,7 +81,6 @@ const mcp = (0, _agimon_ai_doompi_core_mcpFacet.defineMcpPlugin)({
|
|
|
84
81
|
return [
|
|
85
82
|
withWidget("@agimon-ai/doompi-plan/complete_plan", via({ name: "complete_plan" }, at(complete_plan_mcp_default, context))),
|
|
86
83
|
withWidget("@agimon-ai/doompi-plan/record_debug_evidence", via({ name: "record_debug_evidence" }, at(record_debug_evidence_mcp_default, context))),
|
|
87
|
-
withWidget("@agimon-ai/doompi-plan/run_fable_plan", via({ name: "run_fable_plan" }, at(run_fable_plan_mcp_default, context))),
|
|
88
84
|
withWidget("@agimon-ai/doompi-plan/write_plan", via({ name: "write_plan" }, at(write_plan_mcp_default, context)))
|
|
89
85
|
];
|
|
90
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.cjs","names":["defineMcpSkill","readPackageResource","Type","defineMcpTool","defineMcpTool","defineMcpTool","
|
|
1
|
+
{"version":3,"file":"mcp.cjs","names":["defineMcpSkill","readPackageResource","Type","defineMcpTool","defineMcpTool","defineMcpTool","defineMcpPlugin","skillDoompiUsePlan","toolCompletePlan","toolRecordDebugEvidence","toolWritePlan"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-plan.mcp.ts","../../src/schemas/mcpTools.ts","../../src/services/mcpTools/index.ts","../../src/extensions/workspaces/sessions/(backend)/tool/complete_plan.mcp.ts","../../src/extensions/workspaces/sessions/(backend)/tool/record_debug_evidence.mcp.ts","../../src/extensions/workspaces/sessions/(backend)/tool/write_plan.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/doompi-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/doompi-core/serverFacet';\n\nexport default defineMcpSkill({\n name: 'doompi-use-plan',\n description:\n 'Use Doom Pi Plan to draft reviewable normal, debug, or code review plans, persist them, and exit safely.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-use-plan/SKILL.md'),\n});\n","import { Type } from 'typebox';\n\nconst markdown = Type.String({ minLength: 1 });\n\nexport const remoteWritePlanParameters = Type.Object({ markdown }, { additionalProperties: false });\nexport const writePlanParameters = Type.Object({ markdown: Type.Optional(markdown) }, { additionalProperties: false });\n","import type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport type { DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { remoteWritePlanParameters } from '../../schemas/mcpTools';\n\nexport const PLAN_MCP_TOOLS_SERVICE = 'doom/plan-mcp-tools';\n\nconst MODE_ID = 'plan';\nconst MODE_LABEL = 'Plan';\n\nexport interface McpToolCatalog {\n get(name: string): DoomHeadlessTool | undefined;\n names(): readonly string[];\n}\n\nexport function mountMcpTools(tools: readonly DoomHeadlessTool[]) {\n return (context: Context): void => {\n context.plugin((providerContext) => {\n providerContext.provide(PLAN_MCP_TOOLS_SERVICE, {\n get: (name) => tools.find((tool) => tool.name === name),\n names: () => tools.map((tool) => tool.name),\n } satisfies McpToolCatalog);\n });\n };\n}\n\nexport function bindMcpTool(context: DoomMcpPluginContext, name: string): DoomHeadlessTool {\n const catalog = context.services.get<McpToolCatalog>(PLAN_MCP_TOOLS_SERVICE);\n const tool = catalog?.get(name);\n if (!tool || !catalog) throw new Error(`Plan tool is unavailable: ${name}`);\n const writesPlan = name === 'write_plan';\n return {\n ...tool,\n ...(writesPlan\n ? {\n description:\n 'Save the supplied Markdown plan in the bound session. Requires active Plan mode. Saving does not approve implementation.',\n parameters: remoteWritePlanParameters,\n annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },\n }\n : {}),\n execute(toolCallId, parameters, signal, onUpdate) {\n const activeModes = context.selection.read().state?.['minor-mode'] ?? [];\n if (!activeModes.includes(MODE_ID)) {\n const inactiveTools = [...catalog.names()].sort().join(', ');\n throw new Error(`${MODE_LABEL} minor mode is inactive. Inactive ${MODE_LABEL} tools: ${inactiveTools}.`);\n }\n if (\n writesPlan &&\n (typeof parameters !== 'object' ||\n parameters === null ||\n !('markdown' in parameters) ||\n typeof parameters.markdown !== 'string' ||\n !parameters.markdown.trim())\n ) {\n throw new Error(\n 'Supply the complete visible plan in the markdown argument. Remote calls cannot read the ChatGPT transcript.',\n );\n }\n const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);\n return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);\n },\n };\n}\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport { bindMcpTool } from '../../../../../services/mcpTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpTool(context, 'complete_plan'));\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport { bindMcpTool } from '../../../../../services/mcpTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpTool(context, 'record_debug_evidence'));\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport { bindMcpTool } from '../../../../../services/mcpTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpTool(context, 'write_plan'));\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineMcpPlugin, type DoomMcpSessionPlugin } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport skillDoompiUsePlan from '../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-plan.mcp';\nimport toolCompletePlan from '../src/extensions/workspaces/sessions/(backend)/tool/complete_plan.mcp';\nimport toolRecordDebugEvidence from '../src/extensions/workspaces/sessions/(backend)/tool/record_debug_evidence.mcp';\nimport toolWritePlan from '../src/extensions/workspaces/sessions/(backend)/tool/write_plan.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nconst withWidget = <T>(key: string, value: T): T => value === undefined ? value : ({\n ...value, _meta: { ...(value as { _meta?: object })._meta, [\"doompi/widget\"]: key },\n});\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/doompi-plan',\n session: (context) => ({\n get skills(): DoomMcpSessionPlugin['skills'] { return [at(skillDoompiUsePlan, context)]; },\n get tools(): DoomMcpSessionPlugin['tools'] { return [withWidget(\"@agimon-ai/doompi-plan/complete_plan\", via({ name: 'complete_plan' }, at(toolCompletePlan, context))), withWidget(\"@agimon-ai/doompi-plan/record_debug_evidence\", via({ name: 'record_debug_evidence' }, at(toolRecordDebugEvidence, context))), withWidget(\"@agimon-ai/doompi-plan/write_plan\", via({ name: 'write_plan' }, at(toolWritePlan, context)))]; },\n }) satisfies DoomMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;;;;;;AAGA,IAAA,+BAAA,GAAeA,gCAAAA,eAAAA,CAAe;CAC5B,MAAM;CACN,aACE;CACF,aAAA,GAAYC,mCAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,sCAAsC;AACzF,CAAC;;;ACND,MAAM,WAAWC,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;AAE7C,MAAa,4BAA4BA,QAAAA,KAAK,OAAO,EAAE,SAAS,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAC/DA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,SAAS,QAAQ,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;;;ACCrH,MAAa,yBAAyB;AAEtC,MAAM,UAAU;AAChB,MAAM,aAAa;AAkBnB,SAAgB,YAAY,SAA+B,MAAgC;CACzF,MAAM,UAAU,QAAQ,SAAS,IAAoB,sBAAsB;CAC3E,MAAM,OAAO,SAAS,IAAI,IAAI;CAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,IAAI,MAAM,6BAA6B,MAAM;CAC1E,MAAM,aAAa,SAAS;CAC5B,OAAO;EACL,GAAG;EACH,GAAI,aACA;GACE,aACE;GACF,YAAY;GACZ,aAAa;IAAE,cAAc;IAAO,iBAAiB;IAAO,eAAe;GAAM;EACnF,IACA,CAAC;EACL,QAAQ,YAAY,YAAY,QAAQ,UAAU;GAEhD,IAAI,EADgB,QAAQ,UAAU,KAAK,CAAC,CAAC,QAAQ,iBAAiB,CAAC,EAAA,CACtD,SAAS,OAAO,GAAG;IAClC,MAAM,gBAAgB,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI;IAC3D,MAAM,IAAI,MAAM,GAAG,WAAW,oCAAoC,WAAW,UAAU,cAAc,EAAE;GACzG;GACA,IACE,eACC,OAAO,eAAe,YACrB,eAAe,QACf,EAAE,cAAc,eAChB,OAAO,WAAW,aAAa,YAC/B,CAAC,WAAW,SAAS,KAAK,IAE5B,MAAM,IAAI,MACR,6GACF;GAEF,MAAM,kBAAkB,YAAY,IAAI,CAAC,QAAQ,QAAQ,UAAU,QAAQ,MAAM,CAAC;GAClF,OAAO,KAAK,QAAQ,YAAY,YAAY,iBAAiB,UAAU,QAAQ,SAAS;EAC1F;CACF;AACF;;;AC5DA,IAAA,6BAAA,GAAeC,gCAAAA,cAAAA,EAAe,YAAkC,YAAY,SAAS,eAAe,CAAC;;;ACArG,IAAA,qCAAA,GAAeC,gCAAAA,cAAAA,EAAe,YAAkC,YAAY,SAAS,uBAAuB,CAAC;;;ACA7G,IAAA,0BAAA,GAAeC,gCAAAA,cAAAA,EAAe,YAAkC,YAAY,SAAS,YAAY,CAAC;;;ACKlG,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAM,cAAiB,KAAa,UAAgB,UAAU,KAAA,IAAY,QAAS;CACjF,GAAG;CAAO,OAAO;EAAE,GAAI,MAA6B;GAAQ,kBAAkB;CAAI;AACpF;AAEA,MAAa,OAAA,GAAMC,gCAAAA,gBAAAA,CAAgB;CACjC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,SAAyC;GAAE,OAAO,CAAC,GAAGC,6BAAoB,OAAO,CAAC;EAAG;EACzF,IAAI,QAAuC;GAAE,OAAO;IAAC,WAAW,wCAAwC,IAAI,EAAE,MAAM,gBAAgB,GAAG,GAAGC,2BAAkB,OAAO,CAAC,CAAC;IAAG,WAAW,gDAAgD,IAAI,EAAE,MAAM,wBAAwB,GAAG,GAAGC,mCAAyB,OAAO,CAAC,CAAC;IAAG,WAAW,qCAAqC,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGC,wBAAe,OAAO,CAAC,CAAC;GAAC;EAAG;CAC/Z;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.mts","names":[],"sources":["../../generated/mcp.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"mcp.d.mts","names":[],"sources":["../../generated/mcp.ts"],"mappings":";qBAkBa,+CAAG"}
|
package/dist/extensions/mcp.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { Type } from "typebox";
|
|
|
4
4
|
//#region src/extensions/workspaces/sessions/(backend)/skill/doompi-use-plan.mcp.ts
|
|
5
5
|
var doompi_use_plan_mcp_default = defineMcpSkill({
|
|
6
6
|
name: "doompi-use-plan",
|
|
7
|
-
description: "Use Doom Pi Plan to draft reviewable normal, debug, or
|
|
7
|
+
description: "Use Doom Pi Plan to draft reviewable normal, debug, or code review plans, persist them, and exit safely.",
|
|
8
8
|
read: () => readPackageResource(import.meta.url, "src/prompts/doompi-use-plan/SKILL.md")
|
|
9
9
|
});
|
|
10
10
|
//#endregion
|
|
@@ -51,9 +51,6 @@ var complete_plan_mcp_default = defineMcpTool((context) => bindMcpTool(context,
|
|
|
51
51
|
//#region src/extensions/workspaces/sessions/(backend)/tool/record_debug_evidence.mcp.ts
|
|
52
52
|
var record_debug_evidence_mcp_default = defineMcpTool((context) => bindMcpTool(context, "record_debug_evidence"));
|
|
53
53
|
//#endregion
|
|
54
|
-
//#region src/extensions/workspaces/sessions/(backend)/tool/run_fable_plan.mcp.ts
|
|
55
|
-
var run_fable_plan_mcp_default = defineMcpTool((context) => bindMcpTool(context, "run_fable_plan"));
|
|
56
|
-
//#endregion
|
|
57
54
|
//#region src/extensions/workspaces/sessions/(backend)/tool/write_plan.mcp.ts
|
|
58
55
|
var write_plan_mcp_default = defineMcpTool((context) => bindMcpTool(context, "write_plan"));
|
|
59
56
|
//#endregion
|
|
@@ -80,7 +77,6 @@ const mcp = defineMcpPlugin({
|
|
|
80
77
|
return [
|
|
81
78
|
withWidget("@agimon-ai/doompi-plan/complete_plan", via({ name: "complete_plan" }, at(complete_plan_mcp_default, context))),
|
|
82
79
|
withWidget("@agimon-ai/doompi-plan/record_debug_evidence", via({ name: "record_debug_evidence" }, at(record_debug_evidence_mcp_default, context))),
|
|
83
|
-
withWidget("@agimon-ai/doompi-plan/run_fable_plan", via({ name: "run_fable_plan" }, at(run_fable_plan_mcp_default, context))),
|
|
84
80
|
withWidget("@agimon-ai/doompi-plan/write_plan", via({ name: "write_plan" }, at(write_plan_mcp_default, context)))
|
|
85
81
|
];
|
|
86
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.mjs","names":["skillDoompiUsePlan","toolCompletePlan","toolRecordDebugEvidence","
|
|
1
|
+
{"version":3,"file":"mcp.mjs","names":["skillDoompiUsePlan","toolCompletePlan","toolRecordDebugEvidence","toolWritePlan"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-plan.mcp.ts","../../src/schemas/mcpTools.ts","../../src/services/mcpTools/index.ts","../../src/extensions/workspaces/sessions/(backend)/tool/complete_plan.mcp.ts","../../src/extensions/workspaces/sessions/(backend)/tool/record_debug_evidence.mcp.ts","../../src/extensions/workspaces/sessions/(backend)/tool/write_plan.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/doompi-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/doompi-core/serverFacet';\n\nexport default defineMcpSkill({\n name: 'doompi-use-plan',\n description:\n 'Use Doom Pi Plan to draft reviewable normal, debug, or code review plans, persist them, and exit safely.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/doompi-use-plan/SKILL.md'),\n});\n","import { Type } from 'typebox';\n\nconst markdown = Type.String({ minLength: 1 });\n\nexport const remoteWritePlanParameters = Type.Object({ markdown }, { additionalProperties: false });\nexport const writePlanParameters = Type.Object({ markdown: Type.Optional(markdown) }, { additionalProperties: false });\n","import type { DoomHeadlessTool } from '@agimon-ai/doompi-core/headless';\nimport type { DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\nimport type { Context } from '@deepseek-ai/cordis';\n\nimport { remoteWritePlanParameters } from '../../schemas/mcpTools';\n\nexport const PLAN_MCP_TOOLS_SERVICE = 'doom/plan-mcp-tools';\n\nconst MODE_ID = 'plan';\nconst MODE_LABEL = 'Plan';\n\nexport interface McpToolCatalog {\n get(name: string): DoomHeadlessTool | undefined;\n names(): readonly string[];\n}\n\nexport function mountMcpTools(tools: readonly DoomHeadlessTool[]) {\n return (context: Context): void => {\n context.plugin((providerContext) => {\n providerContext.provide(PLAN_MCP_TOOLS_SERVICE, {\n get: (name) => tools.find((tool) => tool.name === name),\n names: () => tools.map((tool) => tool.name),\n } satisfies McpToolCatalog);\n });\n };\n}\n\nexport function bindMcpTool(context: DoomMcpPluginContext, name: string): DoomHeadlessTool {\n const catalog = context.services.get<McpToolCatalog>(PLAN_MCP_TOOLS_SERVICE);\n const tool = catalog?.get(name);\n if (!tool || !catalog) throw new Error(`Plan tool is unavailable: ${name}`);\n const writesPlan = name === 'write_plan';\n return {\n ...tool,\n ...(writesPlan\n ? {\n description:\n 'Save the supplied Markdown plan in the bound session. Requires active Plan mode. Saving does not approve implementation.',\n parameters: remoteWritePlanParameters,\n annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },\n }\n : {}),\n execute(toolCallId, parameters, signal, onUpdate) {\n const activeModes = context.selection.read().state?.['minor-mode'] ?? [];\n if (!activeModes.includes(MODE_ID)) {\n const inactiveTools = [...catalog.names()].sort().join(', ');\n throw new Error(`${MODE_LABEL} minor mode is inactive. Inactive ${MODE_LABEL} tools: ${inactiveTools}.`);\n }\n if (\n writesPlan &&\n (typeof parameters !== 'object' ||\n parameters === null ||\n !('markdown' in parameters) ||\n typeof parameters.markdown !== 'string' ||\n !parameters.markdown.trim())\n ) {\n throw new Error(\n 'Supply the complete visible plan in the markdown argument. Remote calls cannot read the ChatGPT transcript.',\n );\n }\n const executionSignal = AbortSignal.any([context.signal, signal ?? context.signal]);\n return tool.execute(toolCallId, parameters, executionSignal, onUpdate, context.execution);\n },\n };\n}\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport { bindMcpTool } from '../../../../../services/mcpTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpTool(context, 'complete_plan'));\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport { bindMcpTool } from '../../../../../services/mcpTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpTool(context, 'record_debug_evidence'));\n","import { defineMcpTool, type DoomMcpPluginContext } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport { bindMcpTool } from '../../../../../services/mcpTools';\n\nexport default defineMcpTool((context: DoomMcpPluginContext) => bindMcpTool(context, 'write_plan'));\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineMcpPlugin, type DoomMcpSessionPlugin } from '@agimon-ai/doompi-core/mcpFacet';\n\nimport skillDoompiUsePlan from '../src/extensions/workspaces/sessions/(backend)/skill/doompi-use-plan.mcp';\nimport toolCompletePlan from '../src/extensions/workspaces/sessions/(backend)/tool/complete_plan.mcp';\nimport toolRecordDebugEvidence from '../src/extensions/workspaces/sessions/(backend)/tool/record_debug_evidence.mcp';\nimport toolWritePlan from '../src/extensions/workspaces/sessions/(backend)/tool/write_plan.mcp';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nconst withWidget = <T>(key: string, value: T): T => value === undefined ? value : ({\n ...value, _meta: { ...(value as { _meta?: object })._meta, [\"doompi/widget\"]: key },\n});\n\nexport const mcp = defineMcpPlugin({\n name: '@agimon-ai/doompi-plan',\n session: (context) => ({\n get skills(): DoomMcpSessionPlugin['skills'] { return [at(skillDoompiUsePlan, context)]; },\n get tools(): DoomMcpSessionPlugin['tools'] { return [withWidget(\"@agimon-ai/doompi-plan/complete_plan\", via({ name: 'complete_plan' }, at(toolCompletePlan, context))), withWidget(\"@agimon-ai/doompi-plan/record_debug_evidence\", via({ name: 'record_debug_evidence' }, at(toolRecordDebugEvidence, context))), withWidget(\"@agimon-ai/doompi-plan/write_plan\", via({ name: 'write_plan' }, at(toolWritePlan, context)))]; },\n }) satisfies DoomMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;;AAGA,IAAA,8BAAe,eAAe;CAC5B,MAAM;CACN,aACE;CACF,YAAY,oBAAoB,YAAY,KAAK,sCAAsC;AACzF,CAAC;;;ACND,MAAM,WAAW,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;AAE7C,MAAa,4BAA4B,KAAK,OAAO,EAAE,SAAS,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAC/D,KAAK,OAAO,EAAE,UAAU,KAAK,SAAS,QAAQ,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;;;ACCrH,MAAa,yBAAyB;AAEtC,MAAM,UAAU;AAChB,MAAM,aAAa;AAkBnB,SAAgB,YAAY,SAA+B,MAAgC;CACzF,MAAM,UAAU,QAAQ,SAAS,IAAoB,sBAAsB;CAC3E,MAAM,OAAO,SAAS,IAAI,IAAI;CAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,MAAM,IAAI,MAAM,6BAA6B,MAAM;CAC1E,MAAM,aAAa,SAAS;CAC5B,OAAO;EACL,GAAG;EACH,GAAI,aACA;GACE,aACE;GACF,YAAY;GACZ,aAAa;IAAE,cAAc;IAAO,iBAAiB;IAAO,eAAe;GAAM;EACnF,IACA,CAAC;EACL,QAAQ,YAAY,YAAY,QAAQ,UAAU;GAEhD,IAAI,EADgB,QAAQ,UAAU,KAAK,CAAC,CAAC,QAAQ,iBAAiB,CAAC,EAAA,CACtD,SAAS,OAAO,GAAG;IAClC,MAAM,gBAAgB,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI;IAC3D,MAAM,IAAI,MAAM,GAAG,WAAW,oCAAoC,WAAW,UAAU,cAAc,EAAE;GACzG;GACA,IACE,eACC,OAAO,eAAe,YACrB,eAAe,QACf,EAAE,cAAc,eAChB,OAAO,WAAW,aAAa,YAC/B,CAAC,WAAW,SAAS,KAAK,IAE5B,MAAM,IAAI,MACR,6GACF;GAEF,MAAM,kBAAkB,YAAY,IAAI,CAAC,QAAQ,QAAQ,UAAU,QAAQ,MAAM,CAAC;GAClF,OAAO,KAAK,QAAQ,YAAY,YAAY,iBAAiB,UAAU,QAAQ,SAAS;EAC1F;CACF;AACF;;;AC5DA,IAAA,4BAAe,eAAe,YAAkC,YAAY,SAAS,eAAe,CAAC;;;ACArG,IAAA,oCAAe,eAAe,YAAkC,YAAY,SAAS,uBAAuB,CAAC;;;ACA7G,IAAA,yBAAe,eAAe,YAAkC,YAAY,SAAS,YAAY,CAAC;;;ACKlG,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAM,cAAiB,KAAa,UAAgB,UAAU,KAAA,IAAY,QAAS;CACjF,GAAG;CAAO,OAAO;EAAE,GAAI,MAA6B;GAAQ,kBAAkB;CAAI;AACpF;AAEA,MAAa,MAAM,gBAAgB;CACjC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,SAAyC;GAAE,OAAO,CAAC,GAAGA,6BAAoB,OAAO,CAAC;EAAG;EACzF,IAAI,QAAuC;GAAE,OAAO;IAAC,WAAW,wCAAwC,IAAI,EAAE,MAAM,gBAAgB,GAAG,GAAGC,2BAAkB,OAAO,CAAC,CAAC;IAAG,WAAW,gDAAgD,IAAI,EAAE,MAAM,wBAAwB,GAAG,GAAGC,mCAAyB,OAAO,CAAC,CAAC;IAAG,WAAW,qCAAqC,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGC,wBAAe,OAAO,CAAC,CAAC;GAAC;EAAG;CAC/Z;AACF,CAAC"}
|
package/dist/extensions/pi.cjs
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_planMode = require("../planMode-
|
|
5
|
+
const require_planMode = require("../planMode-Cmw5BU17.cjs");
|
|
6
6
|
let _agimon_ai_doompi_core_piExtension = require("@agimon-ai/doompi-core/piExtension");
|
|
7
7
|
let _agimon_ai_doompi_core_extensionFile = require("@agimon-ai/doompi-core/extensionFile");
|
|
8
8
|
//#region src/extensions/workspaces/sessions/(backend)/root.cli.ts
|
|
@@ -16,7 +16,7 @@ var root_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineRoot)((con
|
|
|
16
16
|
moduleUrl: require("url").pathToFileURL(__filename).href,
|
|
17
17
|
skills: [{
|
|
18
18
|
name: "doompi-use-plan",
|
|
19
|
-
description: "Use Doom Pi Plan to draft reviewable normal, debug, or
|
|
19
|
+
description: "Use Doom Pi Plan to draft reviewable normal, debug, or code review plans, persist them, and exit safely."
|
|
20
20
|
}]
|
|
21
21
|
}]
|
|
22
22
|
};
|
|
@@ -45,16 +45,13 @@ var toolCall_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliHoo
|
|
|
45
45
|
var plan_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineResource)((context) => context.root.resources[0]);
|
|
46
46
|
//#endregion
|
|
47
47
|
//#region src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli.ts
|
|
48
|
-
var completePlan_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => context.root.tools[
|
|
48
|
+
var completePlan_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => context.root.tools[2]);
|
|
49
49
|
//#endregion
|
|
50
50
|
//#region src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli.ts
|
|
51
51
|
var recordDebugEvidence_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => context.root.tools[0]);
|
|
52
52
|
//#endregion
|
|
53
|
-
//#region src/extensions/workspaces/sessions/(backend)/tool/runFablePlan.cli.ts
|
|
54
|
-
var runFablePlan_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => context.root.tools[1]);
|
|
55
|
-
//#endregion
|
|
56
53
|
//#region src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli.ts
|
|
57
|
-
var writePlan_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => context.root.tools[
|
|
54
|
+
var writePlan_cli_default = (0, _agimon_ai_doompi_core_extensionFile.defineCliTool)((context) => context.root.tools[1]);
|
|
58
55
|
//#endregion
|
|
59
56
|
//#region generated/pi.ts
|
|
60
57
|
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
@@ -82,7 +79,6 @@ const extension = (0, _agimon_ai_doompi_core_piExtension.definePiExtension)("@ag
|
|
|
82
79
|
...(0, _agimon_ai_doompi_core_piExtension.piToolContributions)("@agimon-ai/doompi-plan", [
|
|
83
80
|
via({ name: "complete_plan" }, at(completePlan_cli_default, contextSession)),
|
|
84
81
|
via({ name: "record_debug_evidence" }, at(recordDebugEvidence_cli_default, contextSession)),
|
|
85
|
-
via({ name: "run_fable_plan" }, at(runFablePlan_cli_default, contextSession)),
|
|
86
82
|
via({ name: "write_plan" }, at(writePlan_cli_default, contextSession))
|
|
87
83
|
]),
|
|
88
84
|
services: [...scopeSession.services ?? []]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.cjs","names":["defineRoot","createPlanModeRuntime","definePiTool","defineCliHook","defineCliHook","defineCliHook","defineCliHook","defineResource","defineCliTool","defineCliTool","defineCliTool","defineCliTool","definePiExtension","rootSession","composeRootHooks","hookBeforeAgentStart","hookContext","hookSessionStart","hookToolCall","resourcePlan","piToolContributions","toolCompletePlan","toolRecordDebugEvidence","toolRunFablePlan","toolWritePlan"],"sources":["../../src/extensions/workspaces/sessions/(backend)/root.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/context.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli.ts","../../src/extensions/workspaces/sessions/(backend)/resource/plan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/runFablePlan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli.ts","../../generated/pi.ts"],"sourcesContent":["import { defineRoot, type RootDeclaration } from '@agimon-ai/doompi-core/extensionFile';\nimport {\n definePiTool,\n type PiPluginContext,\n type PiPluginContributions,\n type PiToolDeclaration,\n} from '@agimon-ai/doompi-core/piExtension';\n\nimport { createPlanModeRuntime } from '../../../../services/planMode';\n\ntype Scope = Omit<ReturnType<typeof createPlanModeRuntime>, 'tools'> & {\n readonly tools: readonly PiToolDeclaration[];\n readonly resources: NonNullable<PiPluginContributions['resources']>;\n};\n\nexport default defineRoot((context: PiPluginContext<undefined>): RootDeclaration<Scope, PiPluginContext<undefined>> => {\n const runtime = createPlanModeRuntime(context.pi);\n const value = {\n ...runtime,\n tools: runtime.tools.map((tool) => definePiTool(tool)),\n resources: [\n {\n source: '@agimon-ai/doompi-plan',\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 ],\n };\n return {\n value,\n services: value.services,\n onStart: value.onStart,\n onStop: value.onStop,\n onDispose: value.onDispose,\n };\n});\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.before_agent_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { PiEventHandlers } from '@agimon-ai/doompi-core/piExtension';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook(\n (context: WithRoot<unknown, Root>): NonNullable<PiEventHandlers['context']> => context.root.events!.context!,\n);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.session_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.tool_call!);\n","import { defineResource, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineResource((context: WithRoot<unknown, Root>) => context.root.resources![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![3]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![1]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![2]!);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, piToolContributions, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/piExtension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli';\nimport hookContext from '../src/extensions/workspaces/sessions/(backend)/hook/context.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport hookToolCall from '../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli';\nimport resourcePlan from '../src/extensions/workspaces/sessions/(backend)/resource/plan.cli';\nimport toolCompletePlan from '../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli';\nimport toolRecordDebugEvidence from '../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli';\nimport toolRunFablePlan from '../src/extensions/workspaces/sessions/(backend)/tool/runFablePlan.cli';\nimport toolWritePlan from '../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof hookBeforeAgentStart> | OptionsOf<typeof hookContext> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof hookToolCall> | OptionsOf<typeof resourcePlan> | OptionsOf<typeof toolCompletePlan> | OptionsOf<typeof toolRecordDebugEvidence> | OptionsOf<typeof toolRunFablePlan> | OptionsOf<typeof toolWritePlan>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-plan', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n events: {\n before_agent_start: at(hookBeforeAgentStart, contextSession) as NonNullable<PiPluginContributions['events']>['before_agent_start'],\n context: at(hookContext, contextSession) as NonNullable<PiPluginContributions['events']>['context'],\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n tool_call: at(hookToolCall, contextSession) as NonNullable<PiPluginContributions['events']>['tool_call'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourcePlan, contextSession)]; },\n ...piToolContributions('@agimon-ai/doompi-plan', [via({ name: 'complete_plan' }, at(toolCompletePlan, contextSession)), via({ name: 'record_debug_evidence' }, at(toolRecordDebugEvidence, contextSession)), via({ name: 'run_fable_plan' }, at(toolRunFablePlan, contextSession)), via({ name: 'write_plan' }, at(toolWritePlan, contextSession))]),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;AAeA,IAAA,oBAAA,GAAeA,qCAAAA,WAAAA,EAAY,YAA4F;CACrH,MAAM,UAAUC,iBAAAA,sBAAsB,QAAQ,EAAE;CAChD,MAAM,QAAQ;EACZ,GAAG;EACH,OAAO,QAAQ,MAAM,KAAK,UAAA,GAASC,mCAAAA,aAAAA,CAAa,IAAI,CAAC;EACrD,WAAW,CACT;GACE,QAAQ;GACR,WAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA;GACA,QAAQ,CACN;IACE,MAAM;IACN,aACE;GACJ,CACF;EACF,CACF;CACF;CACA,OAAO;EACL;EACA,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,MAAM;CACnB;AACF,CAAC;;;ACrCD,IAAA,gCAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,OAAQ,kBAAmB;;;ACC3G,IAAA,uBAAA,GAAeC,qCAAAA,cAAAA,EACZ,YAA8E,QAAQ,KAAK,OAAQ,OACtG;;;ACHA,IAAA,4BAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,OAAQ,aAAc;;;ACAtG,IAAA,wBAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,OAAQ,SAAU;;;ACAlG,IAAA,oBAAA,GAAeC,qCAAAA,eAAAA,EAAgB,YAAqC,QAAQ,KAAK,UAAW,EAAG;;;ACA/F,IAAA,4BAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,mCAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,4BAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,yBAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACkB1F,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,aAAA,GAAYC,mCAAAA,kBAAAA,CAAoC,0BAA0B,OAAO,YAAY;CACxG,MAAM,eAAe,MAAMC,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,IAAA,GAAGC,qCAAAA,iBAAAA,CAAiB,YAAY;EAChC,QAAQ;GACN,oBAAoB,GAAGC,8BAAsB,cAAc;GAC3D,SAAS,GAAGC,qBAAa,cAAc;GACvC,eAAe,GAAGC,0BAAkB,cAAc;GAClD,WAAW,GAAGC,sBAAc,cAAc;EAC5C;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,kBAAc,cAAc,CAAC;EAAG;EACjG,IAAA,GAAGC,mCAAAA,oBAAAA,CAAoB,0BAA0B;GAAC,IAAI,EAAE,MAAM,gBAAgB,GAAG,GAAGC,0BAAkB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,wBAAwB,GAAG,GAAGC,iCAAyB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,iBAAiB,GAAG,GAAGC,0BAAkB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGC,uBAAe,cAAc,CAAC;EAAC,CAAC;EACnV,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"pi.cjs","names":["defineRoot","createPlanModeRuntime","definePiTool","defineCliHook","defineCliHook","defineCliHook","defineCliHook","defineResource","defineCliTool","defineCliTool","defineCliTool","definePiExtension","rootSession","composeRootHooks","hookBeforeAgentStart","hookContext","hookSessionStart","hookToolCall","resourcePlan","piToolContributions","toolCompletePlan","toolRecordDebugEvidence","toolWritePlan"],"sources":["../../src/extensions/workspaces/sessions/(backend)/root.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/context.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli.ts","../../src/extensions/workspaces/sessions/(backend)/resource/plan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli.ts","../../generated/pi.ts"],"sourcesContent":["import { defineRoot, type RootDeclaration } from '@agimon-ai/doompi-core/extensionFile';\nimport {\n definePiTool,\n type PiPluginContext,\n type PiPluginContributions,\n type PiToolDeclaration,\n} from '@agimon-ai/doompi-core/piExtension';\n\nimport { createPlanModeRuntime } from '../../../../services/planMode';\n\ntype Scope = Omit<ReturnType<typeof createPlanModeRuntime>, 'tools'> & {\n readonly tools: readonly PiToolDeclaration[];\n readonly resources: NonNullable<PiPluginContributions['resources']>;\n};\n\nexport default defineRoot((context: PiPluginContext<undefined>): RootDeclaration<Scope, PiPluginContext<undefined>> => {\n const runtime = createPlanModeRuntime(context.pi);\n const value = {\n ...runtime,\n tools: runtime.tools.map((tool) => definePiTool(tool)),\n resources: [\n {\n source: '@agimon-ai/doompi-plan',\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 code review plans, persist them, and exit safely.',\n },\n ],\n },\n ],\n };\n return {\n value,\n services: value.services,\n onStart: value.onStart,\n onStop: value.onStop,\n onDispose: value.onDispose,\n };\n});\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.before_agent_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { PiEventHandlers } from '@agimon-ai/doompi-core/piExtension';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook(\n (context: WithRoot<unknown, Root>): NonNullable<PiEventHandlers['context']> => context.root.events!.context!,\n);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.session_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.tool_call!);\n","import { defineResource, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineResource((context: WithRoot<unknown, Root>) => context.root.resources![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![2]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![1]!);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, piToolContributions, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/piExtension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli';\nimport hookContext from '../src/extensions/workspaces/sessions/(backend)/hook/context.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport hookToolCall from '../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli';\nimport resourcePlan from '../src/extensions/workspaces/sessions/(backend)/resource/plan.cli';\nimport toolCompletePlan from '../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli';\nimport toolRecordDebugEvidence from '../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli';\nimport toolWritePlan from '../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof hookBeforeAgentStart> | OptionsOf<typeof hookContext> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof hookToolCall> | OptionsOf<typeof resourcePlan> | OptionsOf<typeof toolCompletePlan> | OptionsOf<typeof toolRecordDebugEvidence> | OptionsOf<typeof toolWritePlan>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-plan', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n events: {\n before_agent_start: at(hookBeforeAgentStart, contextSession) as NonNullable<PiPluginContributions['events']>['before_agent_start'],\n context: at(hookContext, contextSession) as NonNullable<PiPluginContributions['events']>['context'],\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n tool_call: at(hookToolCall, contextSession) as NonNullable<PiPluginContributions['events']>['tool_call'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourcePlan, contextSession)]; },\n ...piToolContributions('@agimon-ai/doompi-plan', [via({ name: 'complete_plan' }, at(toolCompletePlan, contextSession)), via({ name: 'record_debug_evidence' }, at(toolRecordDebugEvidence, contextSession)), via({ name: 'write_plan' }, at(toolWritePlan, contextSession))]),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;AAeA,IAAA,oBAAA,GAAeA,qCAAAA,WAAAA,EAAY,YAA4F;CACrH,MAAM,UAAUC,iBAAAA,sBAAsB,QAAQ,EAAE;CAChD,MAAM,QAAQ;EACZ,GAAG;EACH,OAAO,QAAQ,MAAM,KAAK,UAAA,GAASC,mCAAAA,aAAAA,CAAa,IAAI,CAAC;EACrD,WAAW,CACT;GACE,QAAQ;GACR,WAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA;GACA,QAAQ,CACN;IACE,MAAM;IACN,aACE;GACJ,CACF;EACF,CACF;CACF;CACA,OAAO;EACL;EACA,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,MAAM;CACnB;AACF,CAAC;;;ACrCD,IAAA,gCAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,OAAQ,kBAAmB;;;ACC3G,IAAA,uBAAA,GAAeC,qCAAAA,cAAAA,EACZ,YAA8E,QAAQ,KAAK,OAAQ,OACtG;;;ACHA,IAAA,4BAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,OAAQ,aAAc;;;ACAtG,IAAA,wBAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,OAAQ,SAAU;;;ACAlG,IAAA,oBAAA,GAAeC,qCAAAA,eAAAA,EAAgB,YAAqC,QAAQ,KAAK,UAAW,EAAG;;;ACA/F,IAAA,4BAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,mCAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,yBAAA,GAAeC,qCAAAA,cAAAA,EAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACiB1F,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,aAAA,GAAYC,mCAAAA,kBAAAA,CAAoC,0BAA0B,OAAO,YAAY;CACxG,MAAM,eAAe,MAAMC,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,IAAA,GAAGC,qCAAAA,iBAAAA,CAAiB,YAAY;EAChC,QAAQ;GACN,oBAAoB,GAAGC,8BAAsB,cAAc;GAC3D,SAAS,GAAGC,qBAAa,cAAc;GACvC,eAAe,GAAGC,0BAAkB,cAAc;GAClD,WAAW,GAAGC,sBAAc,cAAc;EAC5C;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,kBAAc,cAAc,CAAC;EAAG;EACjG,IAAA,GAAGC,mCAAAA,oBAAAA,CAAoB,0BAA0B;GAAC,IAAI,EAAE,MAAM,gBAAgB,GAAG,GAAGC,0BAAkB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,wBAAwB,GAAG,GAAGC,iCAAyB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGC,uBAAe,cAAc,CAAC;EAAC,CAAC;EAC5Q,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBA0Ba,+DAAS"}
|
package/dist/extensions/pi.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as createPlanModeRuntime } from "../planMode-
|
|
1
|
+
import { l as createPlanModeRuntime } from "../planMode-CsQds1DJ.mjs";
|
|
2
2
|
import { definePiExtension, definePiTool, piToolContributions } from "@agimon-ai/doompi-core/piExtension";
|
|
3
3
|
import { composeRootHooks, defineCliHook, defineCliTool, defineResource, defineRoot } from "@agimon-ai/doompi-core/extensionFile";
|
|
4
4
|
//#region src/extensions/workspaces/sessions/(backend)/root.cli.ts
|
|
@@ -12,7 +12,7 @@ var root_cli_default = defineRoot((context) => {
|
|
|
12
12
|
moduleUrl: import.meta.url,
|
|
13
13
|
skills: [{
|
|
14
14
|
name: "doompi-use-plan",
|
|
15
|
-
description: "Use Doom Pi Plan to draft reviewable normal, debug, or
|
|
15
|
+
description: "Use Doom Pi Plan to draft reviewable normal, debug, or code review plans, persist them, and exit safely."
|
|
16
16
|
}]
|
|
17
17
|
}]
|
|
18
18
|
};
|
|
@@ -41,16 +41,13 @@ var toolCall_cli_default = defineCliHook((context) => context.root.events.tool_c
|
|
|
41
41
|
var plan_cli_default = defineResource((context) => context.root.resources[0]);
|
|
42
42
|
//#endregion
|
|
43
43
|
//#region src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli.ts
|
|
44
|
-
var completePlan_cli_default = defineCliTool((context) => context.root.tools[
|
|
44
|
+
var completePlan_cli_default = defineCliTool((context) => context.root.tools[2]);
|
|
45
45
|
//#endregion
|
|
46
46
|
//#region src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli.ts
|
|
47
47
|
var recordDebugEvidence_cli_default = defineCliTool((context) => context.root.tools[0]);
|
|
48
48
|
//#endregion
|
|
49
|
-
//#region src/extensions/workspaces/sessions/(backend)/tool/runFablePlan.cli.ts
|
|
50
|
-
var runFablePlan_cli_default = defineCliTool((context) => context.root.tools[1]);
|
|
51
|
-
//#endregion
|
|
52
49
|
//#region src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli.ts
|
|
53
|
-
var writePlan_cli_default = defineCliTool((context) => context.root.tools[
|
|
50
|
+
var writePlan_cli_default = defineCliTool((context) => context.root.tools[1]);
|
|
54
51
|
//#endregion
|
|
55
52
|
//#region generated/pi.ts
|
|
56
53
|
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
@@ -78,7 +75,6 @@ const extension = definePiExtension("@agimon-ai/doompi-plan", async (context) =>
|
|
|
78
75
|
...piToolContributions("@agimon-ai/doompi-plan", [
|
|
79
76
|
via({ name: "complete_plan" }, at(completePlan_cli_default, contextSession)),
|
|
80
77
|
via({ name: "record_debug_evidence" }, at(recordDebugEvidence_cli_default, contextSession)),
|
|
81
|
-
via({ name: "run_fable_plan" }, at(runFablePlan_cli_default, contextSession)),
|
|
82
78
|
via({ name: "write_plan" }, at(writePlan_cli_default, contextSession))
|
|
83
79
|
]),
|
|
84
80
|
services: [...scopeSession.services ?? []]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.mjs","names":["rootSession","hookBeforeAgentStart","hookContext","hookSessionStart","hookToolCall","resourcePlan","toolCompletePlan","toolRecordDebugEvidence","toolRunFablePlan","toolWritePlan"],"sources":["../../src/extensions/workspaces/sessions/(backend)/root.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/context.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli.ts","../../src/extensions/workspaces/sessions/(backend)/resource/plan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/runFablePlan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli.ts","../../generated/pi.ts"],"sourcesContent":["import { defineRoot, type RootDeclaration } from '@agimon-ai/doompi-core/extensionFile';\nimport {\n definePiTool,\n type PiPluginContext,\n type PiPluginContributions,\n type PiToolDeclaration,\n} from '@agimon-ai/doompi-core/piExtension';\n\nimport { createPlanModeRuntime } from '../../../../services/planMode';\n\ntype Scope = Omit<ReturnType<typeof createPlanModeRuntime>, 'tools'> & {\n readonly tools: readonly PiToolDeclaration[];\n readonly resources: NonNullable<PiPluginContributions['resources']>;\n};\n\nexport default defineRoot((context: PiPluginContext<undefined>): RootDeclaration<Scope, PiPluginContext<undefined>> => {\n const runtime = createPlanModeRuntime(context.pi);\n const value = {\n ...runtime,\n tools: runtime.tools.map((tool) => definePiTool(tool)),\n resources: [\n {\n source: '@agimon-ai/doompi-plan',\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 ],\n };\n return {\n value,\n services: value.services,\n onStart: value.onStart,\n onStop: value.onStop,\n onDispose: value.onDispose,\n };\n});\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.before_agent_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { PiEventHandlers } from '@agimon-ai/doompi-core/piExtension';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook(\n (context: WithRoot<unknown, Root>): NonNullable<PiEventHandlers['context']> => context.root.events!.context!,\n);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.session_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.tool_call!);\n","import { defineResource, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineResource((context: WithRoot<unknown, Root>) => context.root.resources![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![3]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![1]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![2]!);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, piToolContributions, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/piExtension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli';\nimport hookContext from '../src/extensions/workspaces/sessions/(backend)/hook/context.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport hookToolCall from '../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli';\nimport resourcePlan from '../src/extensions/workspaces/sessions/(backend)/resource/plan.cli';\nimport toolCompletePlan from '../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli';\nimport toolRecordDebugEvidence from '../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli';\nimport toolRunFablePlan from '../src/extensions/workspaces/sessions/(backend)/tool/runFablePlan.cli';\nimport toolWritePlan from '../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof hookBeforeAgentStart> | OptionsOf<typeof hookContext> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof hookToolCall> | OptionsOf<typeof resourcePlan> | OptionsOf<typeof toolCompletePlan> | OptionsOf<typeof toolRecordDebugEvidence> | OptionsOf<typeof toolRunFablePlan> | OptionsOf<typeof toolWritePlan>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-plan', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n events: {\n before_agent_start: at(hookBeforeAgentStart, contextSession) as NonNullable<PiPluginContributions['events']>['before_agent_start'],\n context: at(hookContext, contextSession) as NonNullable<PiPluginContributions['events']>['context'],\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n tool_call: at(hookToolCall, contextSession) as NonNullable<PiPluginContributions['events']>['tool_call'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourcePlan, contextSession)]; },\n ...piToolContributions('@agimon-ai/doompi-plan', [via({ name: 'complete_plan' }, at(toolCompletePlan, contextSession)), via({ name: 'record_debug_evidence' }, at(toolRecordDebugEvidence, contextSession)), via({ name: 'run_fable_plan' }, at(toolRunFablePlan, contextSession)), via({ name: 'write_plan' }, at(toolWritePlan, contextSession))]),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;AAeA,IAAA,mBAAe,YAAY,YAA4F;CACrH,MAAM,UAAU,sBAAsB,QAAQ,EAAE;CAChD,MAAM,QAAQ;EACZ,GAAG;EACH,OAAO,QAAQ,MAAM,KAAK,SAAS,aAAa,IAAI,CAAC;EACrD,WAAW,CACT;GACE,QAAQ;GACR,WAAW,YAAY;GACvB,QAAQ,CACN;IACE,MAAM;IACN,aACE;GACJ,CACF;EACF,CACF;CACF;CACA,OAAO;EACL;EACA,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,MAAM;CACnB;AACF,CAAC;;;ACrCD,IAAA,+BAAe,eAAe,YAAqC,QAAQ,KAAK,OAAQ,kBAAmB;;;ACC3G,IAAA,sBAAe,eACZ,YAA8E,QAAQ,KAAK,OAAQ,OACtG;;;ACHA,IAAA,2BAAe,eAAe,YAAqC,QAAQ,KAAK,OAAQ,aAAc;;;ACAtG,IAAA,uBAAe,eAAe,YAAqC,QAAQ,KAAK,OAAQ,SAAU;;;ACAlG,IAAA,mBAAe,gBAAgB,YAAqC,QAAQ,KAAK,UAAW,EAAG;;;ACA/F,IAAA,2BAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,kCAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,2BAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,wBAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACkB1F,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,YAAY,kBAAoC,0BAA0B,OAAO,YAAY;CACxG,MAAM,eAAe,MAAMA,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,GAAG,iBAAiB,YAAY;EAChC,QAAQ;GACN,oBAAoB,GAAGC,8BAAsB,cAAc;GAC3D,SAAS,GAAGC,qBAAa,cAAc;GACvC,eAAe,GAAGC,0BAAkB,cAAc;GAClD,WAAW,GAAGC,sBAAc,cAAc;EAC5C;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,kBAAc,cAAc,CAAC;EAAG;EACjG,GAAG,oBAAoB,0BAA0B;GAAC,IAAI,EAAE,MAAM,gBAAgB,GAAG,GAAGC,0BAAkB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,wBAAwB,GAAG,GAAGC,iCAAyB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,iBAAiB,GAAG,GAAGC,0BAAkB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGC,uBAAe,cAAc,CAAC;EAAC,CAAC;EACnV,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"pi.mjs","names":["rootSession","hookBeforeAgentStart","hookContext","hookSessionStart","hookToolCall","resourcePlan","toolCompletePlan","toolRecordDebugEvidence","toolWritePlan"],"sources":["../../src/extensions/workspaces/sessions/(backend)/root.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/context.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.ts","../../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli.ts","../../src/extensions/workspaces/sessions/(backend)/resource/plan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli.ts","../../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli.ts","../../generated/pi.ts"],"sourcesContent":["import { defineRoot, type RootDeclaration } from '@agimon-ai/doompi-core/extensionFile';\nimport {\n definePiTool,\n type PiPluginContext,\n type PiPluginContributions,\n type PiToolDeclaration,\n} from '@agimon-ai/doompi-core/piExtension';\n\nimport { createPlanModeRuntime } from '../../../../services/planMode';\n\ntype Scope = Omit<ReturnType<typeof createPlanModeRuntime>, 'tools'> & {\n readonly tools: readonly PiToolDeclaration[];\n readonly resources: NonNullable<PiPluginContributions['resources']>;\n};\n\nexport default defineRoot((context: PiPluginContext<undefined>): RootDeclaration<Scope, PiPluginContext<undefined>> => {\n const runtime = createPlanModeRuntime(context.pi);\n const value = {\n ...runtime,\n tools: runtime.tools.map((tool) => definePiTool(tool)),\n resources: [\n {\n source: '@agimon-ai/doompi-plan',\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 code review plans, persist them, and exit safely.',\n },\n ],\n },\n ],\n };\n return {\n value,\n services: value.services,\n onStart: value.onStart,\n onStop: value.onStop,\n onDispose: value.onDispose,\n };\n});\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.before_agent_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\nimport type { PiEventHandlers } from '@agimon-ai/doompi-core/piExtension';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook(\n (context: WithRoot<unknown, Root>): NonNullable<PiEventHandlers['context']> => context.root.events!.context!,\n);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.session_start!);\n","import { defineCliHook, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliHook((context: WithRoot<unknown, Root>) => context.root.events!.tool_call!);\n","import { defineResource, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineResource((context: WithRoot<unknown, Root>) => context.root.resources![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![2]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![0]!);\n","import { defineCliTool, type WithRoot } from '@agimon-ai/doompi-core/extensionFile';\n\ntype Root = Awaited<ReturnType<typeof import('../root.cli').default>>['value'];\n\nexport default defineCliTool((context: WithRoot<unknown, Root>) => context.root.tools![1]!);\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, piToolContributions, type PiPluginContext, type PiPluginContributions } from '@agimon-ai/doompi-core/piExtension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.cli';\nimport hookContext from '../src/extensions/workspaces/sessions/(backend)/hook/context.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport hookToolCall from '../src/extensions/workspaces/sessions/(backend)/hook/toolCall.cli';\nimport resourcePlan from '../src/extensions/workspaces/sessions/(backend)/resource/plan.cli';\nimport toolCompletePlan from '../src/extensions/workspaces/sessions/(backend)/tool/completePlan.cli';\nimport toolRecordDebugEvidence from '../src/extensions/workspaces/sessions/(backend)/tool/recordDebugEvidence.cli';\nimport toolWritePlan from '../src/extensions/workspaces/sessions/(backend)/tool/writePlan.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof hookBeforeAgentStart> | OptionsOf<typeof hookContext> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof hookToolCall> | OptionsOf<typeof resourcePlan> | OptionsOf<typeof toolCompletePlan> | OptionsOf<typeof toolRecordDebugEvidence> | OptionsOf<typeof toolWritePlan>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-plan', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n events: {\n before_agent_start: at(hookBeforeAgentStart, contextSession) as NonNullable<PiPluginContributions['events']>['before_agent_start'],\n context: at(hookContext, contextSession) as NonNullable<PiPluginContributions['events']>['context'],\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n tool_call: at(hookToolCall, contextSession) as NonNullable<PiPluginContributions['events']>['tool_call'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourcePlan, contextSession)]; },\n ...piToolContributions('@agimon-ai/doompi-plan', [via({ name: 'complete_plan' }, at(toolCompletePlan, contextSession)), via({ name: 'record_debug_evidence' }, at(toolRecordDebugEvidence, contextSession)), via({ name: 'write_plan' }, at(toolWritePlan, contextSession))]),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;AAeA,IAAA,mBAAe,YAAY,YAA4F;CACrH,MAAM,UAAU,sBAAsB,QAAQ,EAAE;CAChD,MAAM,QAAQ;EACZ,GAAG;EACH,OAAO,QAAQ,MAAM,KAAK,SAAS,aAAa,IAAI,CAAC;EACrD,WAAW,CACT;GACE,QAAQ;GACR,WAAW,YAAY;GACvB,QAAQ,CACN;IACE,MAAM;IACN,aACE;GACJ,CACF;EACF,CACF;CACF;CACA,OAAO;EACL;EACA,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,MAAM;CACnB;AACF,CAAC;;;ACrCD,IAAA,+BAAe,eAAe,YAAqC,QAAQ,KAAK,OAAQ,kBAAmB;;;ACC3G,IAAA,sBAAe,eACZ,YAA8E,QAAQ,KAAK,OAAQ,OACtG;;;ACHA,IAAA,2BAAe,eAAe,YAAqC,QAAQ,KAAK,OAAQ,aAAc;;;ACAtG,IAAA,uBAAe,eAAe,YAAqC,QAAQ,KAAK,OAAQ,SAAU;;;ACAlG,IAAA,mBAAe,gBAAgB,YAAqC,QAAQ,KAAK,UAAW,EAAG;;;ACA/F,IAAA,2BAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,kCAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACA1F,IAAA,wBAAe,eAAe,YAAqC,QAAQ,KAAK,MAAO,EAAG;;;ACiB1F,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AACpE,MAAM,OAAU,UAAmC,UAChD,UAAU,KAAA,IAAY,KAAA,IAAY;CAAE,GAAG;CAAU,GAAI;AAAiB;AAEzE,MAAa,YAAY,kBAAoC,0BAA0B,OAAO,YAAY;CACxG,MAAM,eAAe,MAAMA,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,GAAG,iBAAiB,YAAY;EAChC,QAAQ;GACN,oBAAoB,GAAGC,8BAAsB,cAAc;GAC3D,SAAS,GAAGC,qBAAa,cAAc;GACvC,eAAe,GAAGC,0BAAkB,cAAc;GAClD,WAAW,GAAGC,sBAAc,cAAc;EAC5C;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,kBAAc,cAAc,CAAC;EAAG;EACjG,GAAG,oBAAoB,0BAA0B;GAAC,IAAI,EAAE,MAAM,gBAAgB,GAAG,GAAGC,0BAAkB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,wBAAwB,GAAG,GAAGC,iCAAyB,cAAc,CAAC;GAAG,IAAI,EAAE,MAAM,aAAa,GAAG,GAAGC,uBAAe,cAAc,CAAC;EAAC,CAAC;EAC5Q,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|