@agimon-ai/doompi-plan 0.0.1-alpha.9 → 0.0.1-alpha.91
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 +108 -20
- package/dist/apiContracts.cjs +57 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +53 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +52 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/config-BdNUVev4.cjs +42 -0
- package/dist/config-BdNUVev4.cjs.map +1 -0
- package/dist/config-CYzUW54g.d.mts +13 -0
- package/dist/config-CYzUW54g.d.mts.map +1 -0
- package/dist/config-Y8TZgcXt.mjs +25 -0
- package/dist/config-Y8TZgcXt.mjs.map +1 -0
- package/dist/config.cjs +12 -2
- package/dist/config.d.mts +2 -14
- package/dist/config.mjs +2 -2
- package/dist/extensions/mcp-ui.mjs +57 -0
- package/dist/extensions/mcp-ui.mjs.map +1 -0
- package/dist/extensions/mcp.cjs +97 -0
- package/dist/extensions/mcp.cjs.map +1 -0
- package/dist/extensions/mcp.d.mts +5 -0
- package/dist/extensions/mcp.d.mts.map +1 -0
- package/dist/extensions/mcp.mjs +92 -0
- package/dist/extensions/mcp.mjs.map +1 -0
- package/dist/extensions/pi.cjs +94 -1
- package/dist/extensions/pi.cjs.map +1 -1
- package/dist/extensions/pi.d.mts +5 -2
- package/dist/extensions/pi.d.mts.map +1 -0
- package/dist/extensions/pi.mjs +89 -1
- package/dist/extensions/pi.mjs.map +1 -1
- package/dist/extensions/server.cjs +788 -0
- package/dist/extensions/server.cjs.map +1 -0
- package/dist/extensions/server.d.mts +5 -0
- package/dist/extensions/server.d.mts.map +1 -0
- package/dist/extensions/server.mjs +779 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/extensions/web.mjs +864 -0
- package/dist/extensions/web.mjs.map +1 -0
- package/dist/fableFlow-B7DJZSkP.mjs +214 -0
- package/dist/fableFlow-B7DJZSkP.mjs.map +1 -0
- package/dist/fableFlow-D4K01Whn.cjs +279 -0
- package/dist/fableFlow-D4K01Whn.cjs.map +1 -0
- package/dist/fableFlow.cjs +13 -3
- package/dist/fableFlow.d.mts +2 -66
- package/dist/fableFlow.mjs +2 -3
- package/dist/index-CtRRd34-.d.mts +34 -0
- package/dist/index-CtRRd34-.d.mts.map +1 -0
- package/dist/index-NVQtqXSM.d.mts +149 -0
- package/dist/index-NVQtqXSM.d.mts.map +1 -0
- package/dist/{fableFlow.d.cts → index-lbK8nFPy.d.mts} +5 -3
- package/dist/index-lbK8nFPy.d.mts.map +1 -0
- package/dist/index-svs1oI26.d.mts +52 -0
- package/dist/index-svs1oI26.d.mts.map +1 -0
- package/dist/index.cjs +51 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +5 -1
- package/dist/logSinkTelemetry-CAUggQQ0.mjs +40 -0
- package/dist/logSinkTelemetry-CAUggQQ0.mjs.map +1 -0
- package/dist/logSinkTelemetry-DeENQ5r-.cjs +51 -0
- package/dist/logSinkTelemetry-DeENQ5r-.cjs.map +1 -0
- package/dist/logSinkTelemetry.cjs +4 -2
- package/dist/logSinkTelemetry.d.mts +2 -24
- package/dist/logSinkTelemetry.mjs +2 -2
- package/dist/planConfig-Cp6n3Ly_.mjs +186 -0
- package/dist/planConfig-Cp6n3Ly_.mjs.map +1 -0
- package/dist/planConfig-l1DuX_OI.cjs +209 -0
- package/dist/planConfig-l1DuX_OI.cjs.map +1 -0
- package/dist/planConfig.cjs +6 -2
- package/dist/planConfig.d.mts +47 -0
- package/dist/planConfig.d.mts.map +1 -0
- package/dist/planConfig.mjs +2 -2
- package/dist/planMode-D8UGqbWB.cjs +2175 -0
- package/dist/planMode-D8UGqbWB.cjs.map +1 -0
- package/dist/planMode-DROtM7Ha.mjs +1964 -0
- package/dist/planMode-DROtM7Ha.mjs.map +1 -0
- package/dist/planMode.cjs +22 -6
- package/dist/planMode.d.mts +3 -75
- package/dist/planMode.mjs +2 -6
- package/dist/prompts-2tIN8Ulh.mjs +67 -0
- package/dist/prompts-2tIN8Ulh.mjs.map +1 -0
- package/dist/prompts-Dere4Q0Z.cjs +96 -0
- package/dist/prompts-Dere4Q0Z.cjs.map +1 -0
- package/dist/prompts.cjs +7 -3
- package/dist/prompts.d.mts +2 -24
- package/dist/prompts.mjs +2 -3
- package/llms.txt +9 -0
- package/package.json +143 -24
- package/src/prompts/doompi-use-plan/SKILL.md +41 -0
- package/src/types/planApi.ts +125 -0
- package/src/types/planSettings.ts +78 -0
- package/dist/_virtual/_rolldown/runtime.cjs +0 -1
- package/dist/config.cjs.map +0 -1
- package/dist/config.d.cts +0 -14
- package/dist/config.d.cts.map +0 -1
- package/dist/config.d.mts.map +0 -1
- package/dist/config.mjs.map +0 -1
- package/dist/extension.cjs +0 -2
- package/dist/extension.cjs.map +0 -1
- package/dist/extension.d.cts +0 -8
- package/dist/extension.d.cts.map +0 -1
- package/dist/extension.d.mts +0 -8
- package/dist/extension.d.mts.map +0 -1
- package/dist/extension.mjs +0 -2
- package/dist/extension.mjs.map +0 -1
- package/dist/extensions/doom.cjs +0 -2
- package/dist/extensions/doom.cjs.map +0 -1
- package/dist/extensions/doom.d.cts +0 -8
- package/dist/extensions/doom.d.cts.map +0 -1
- package/dist/extensions/doom.d.mts +0 -8
- package/dist/extensions/doom.d.mts.map +0 -1
- package/dist/extensions/doom.mjs +0 -2
- package/dist/extensions/doom.mjs.map +0 -1
- package/dist/extensions/pi.d.cts +0 -2
- package/dist/fableFlow.cjs.map +0 -1
- package/dist/fableFlow.d.cts.map +0 -1
- package/dist/fableFlow.d.mts.map +0 -1
- package/dist/fableFlow.mjs.map +0 -1
- package/dist/index.d.cts +0 -5
- package/dist/logSinkTelemetry.cjs.map +0 -1
- package/dist/logSinkTelemetry.d.cts +0 -24
- package/dist/logSinkTelemetry.d.cts.map +0 -1
- package/dist/logSinkTelemetry.d.mts.map +0 -1
- package/dist/logSinkTelemetry.mjs.map +0 -1
- package/dist/planConfig.cjs.map +0 -1
- package/dist/planConfig.mjs.map +0 -1
- package/dist/planMode.cjs.map +0 -1
- package/dist/planMode.d.cts +0 -75
- package/dist/planMode.d.cts.map +0 -1
- package/dist/planMode.d.mts.map +0 -1
- package/dist/planMode.mjs.map +0 -1
- package/dist/prompts.cjs.map +0 -1
- package/dist/prompts.d.cts +0 -24
- package/dist/prompts.d.cts.map +0 -1
- package/dist/prompts.d.mts.map +0 -1
- package/dist/prompts.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,41 +1,129 @@
|
|
|
1
1
|
# @agimon-ai/doompi-plan
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Create and review stored plans in Pi with file edits withheld, explicit completion, and normal, debug, or Fable-assisted flows.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
it toggles mid-session and reports itself on the shared `MODES` line.
|
|
5
|
+
Part of the [DoomPi distribution](https://www.npmjs.com/package/@agimon-ai/doompi).
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
Plan mode withholds the `edit` and `write` tools while it is active, and adds its own tools
|
|
8
|
+
without removing anything else other packages supply. Planning instructions still require
|
|
9
|
+
read-only exploration until the user approves implementation, except for saving the plan
|
|
10
|
+
through `write_plan`. `bash` stays available, so Plan raises the cost of an accidental write
|
|
11
|
+
rather than preventing one. Plan is not a sandbox or a repository permission boundary.
|
|
12
|
+
|
|
13
|
+
> **Alpha:** planning flows and tool contracts may change between releases.
|
|
14
|
+
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
- Node.js 22.19.0 or newer
|
|
18
|
+
- Pi 0.85.0
|
|
11
19
|
|
|
12
20
|
## Install
|
|
13
21
|
|
|
22
|
+
The seeded `modes.yaml` selects Plan in `default.packages`. Keep it there or select it through a
|
|
23
|
+
layer; Plan remains inactive until requested. For standalone Pi:
|
|
24
|
+
|
|
14
25
|
```bash
|
|
15
|
-
|
|
26
|
+
pi install npm:@agimon-ai/doompi-plan
|
|
16
27
|
```
|
|
17
28
|
|
|
18
|
-
|
|
29
|
+
DoomPi and standalone Pi use the same `@agimon-ai/doompi-plan/extensions/pi` extension.
|
|
19
30
|
|
|
20
|
-
|
|
31
|
+
## Start and exit
|
|
21
32
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
| Key | Flavor |
|
|
34
|
+
| --------- | ------------------------------------------------------ |
|
|
35
|
+
| `SPC p e` | Normal planning, and the way out once any flavor is on |
|
|
36
|
+
| `SPC p d` | Debug planning with a bounded evidence packet |
|
|
37
|
+
| `SPC p f` | Fable-assisted drafting followed by Pi verification |
|
|
38
|
+
|
|
39
|
+
`SPC p e` reads `enter` while the mode is off and `exit` while it is on, where exiting restores the
|
|
40
|
+
prior model, thinking level, and tool state.
|
|
41
|
+
|
|
42
|
+
Normal planning expects repository exploration and delegation where available. Debug planning
|
|
43
|
+
separates verified evidence from hypotheses. Fable is an optional Team-provided planning service.
|
|
44
|
+
When Team provides `doom/fable-plan`, Plan treats returned text as untrusted and requires Pi to
|
|
45
|
+
verify and synthesize the final plan. Its child capability ceiling comes from
|
|
46
|
+
`doom/subagent-policy` and is removed when either provider or Plan unloads.
|
|
47
|
+
|
|
48
|
+
A model restoration failure leaves Plan active and reports the failure rather than pretending
|
|
49
|
+
the session was restored.
|
|
50
|
+
|
|
51
|
+
## Write and complete a plan
|
|
52
|
+
|
|
53
|
+
`write_plan` accepts visible Markdown plan content and writes a unique file under `~/.pi/plans` by
|
|
54
|
+
default. It refuses a plan that is empty or was not presented in visible assistant output, and it
|
|
55
|
+
validates the destination before writing. The plan path and content become visible session state.
|
|
56
|
+
|
|
57
|
+
After a plan exists, `complete_plan` asks whether to exit or continue planning. The user must
|
|
58
|
+
explicitly approve exit. If the selected mode already exposes `ask_user_question`, Plan reuses it;
|
|
59
|
+
it does not activate an omitted feedback layer.
|
|
60
|
+
|
|
61
|
+
In the TUI's autonomous Voice mode, review choices are narrated, the turn terminates, and the next
|
|
62
|
+
user message carries the decision. The headless server does not implement narrated plan review,
|
|
63
|
+
so autonomous Voice disables its UI-only `complete_plan` tool. `write_plan` remains available with
|
|
64
|
+
supplied or already presented Markdown and never falls back to a UI input dialog in that mode.
|
|
65
|
+
Stopping autonomous Voice restores UI review when Plan is still active. Neither path auto-approves implementation.
|
|
26
66
|
|
|
27
|
-
|
|
28
|
-
|
|
67
|
+
## Read and edit the plan in the cockpit
|
|
68
|
+
|
|
69
|
+
Once `write_plan` succeeds, a `plan` group appears in the cockpit's activity dock and stays for the
|
|
70
|
+
rest of the session, including after Plan mode is exited: that is when the agent starts
|
|
71
|
+
implementing, which is when the plan is most worth having open. The row opens a temporary tab that
|
|
72
|
+
renders the plan as Markdown, with a `source` view that edits it and saves back to the plan file.
|
|
73
|
+
|
|
74
|
+
The agent reads the plan file at the start of every turn, so a saved edit is what it implements. A
|
|
75
|
+
save carries the hash the reader loaded and is refused if the agent rewrote the plan in the
|
|
76
|
+
meantime, rather than overwriting it.
|
|
77
|
+
|
|
78
|
+
The cockpit reaches the plan through this package's session API, mounted at `/api/plugin/plans`.
|
|
79
|
+
Because a host imports the built entry, a change here needs `pnpm build` and `doompi sync` before a
|
|
80
|
+
running cockpit sees it.
|
|
81
|
+
|
|
82
|
+
## Configure models and storage
|
|
83
|
+
|
|
84
|
+
Put planning settings in the repository's `.doom/config.yaml` or the global
|
|
85
|
+
`~/.pi/.doom/config.yaml`:
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
modes:
|
|
89
|
+
planning:
|
|
90
|
+
main:
|
|
91
|
+
model: provider/planning-model
|
|
92
|
+
thinking: high
|
|
93
|
+
subagents:
|
|
94
|
+
model: provider/research-model
|
|
95
|
+
thinking: medium
|
|
96
|
+
plansDirectory: ~/.pi/plans
|
|
29
97
|
```
|
|
30
98
|
|
|
31
|
-
|
|
99
|
+
`main` controls the planning model, `subagents` controls delegated research defaults, and
|
|
100
|
+
`plansDirectory` can be absolute, repository-relative, or under `~`. Planning and delegated model
|
|
101
|
+
calls consume provider quota.
|
|
102
|
+
|
|
103
|
+
## Public API
|
|
104
|
+
|
|
105
|
+
The root exports planning configuration schemas, prompts, Fable flow helpers, and the Plan mode
|
|
106
|
+
service. Focused exports include `/config`, `/plan-config`, `/plan-mode`, `/fable-flow`, and `/prompts`.
|
|
107
|
+
The session-scoped server plugin owns the cockpit plan API. Pi and server entries live in
|
|
108
|
+
`src/extensions`; their public modules are `/extensions/pi` and `/extensions/server`.
|
|
109
|
+
Controllers compose tools and services. Services live in named folders, and `src/exports`
|
|
110
|
+
contains only flat public exports.
|
|
32
111
|
|
|
33
|
-
|
|
34
|
-
the
|
|
112
|
+
The Pi plugin constructs declarations, installs optional Cordis services, and then becomes ready.
|
|
113
|
+
Its `onStop` hook cancels pending work and restores the previous agent configuration before
|
|
114
|
+
registrations are removed. `onDispose` also handles partial startup cleanup. Session events and
|
|
115
|
+
Plan flavor changes remain separate from plugin startup and shutdown.
|
|
35
116
|
|
|
36
|
-
##
|
|
117
|
+
## Development
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pnpm build
|
|
121
|
+
pnpm typecheck
|
|
122
|
+
pnpm test
|
|
123
|
+
pnpm lint
|
|
124
|
+
```
|
|
37
125
|
|
|
38
|
-
|
|
126
|
+
Maintained by [Agimon](https://agimon.ai/about).
|
|
39
127
|
|
|
40
128
|
## License
|
|
41
129
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
let _agimon_ai_doompi_core_apiContracts = require("@agimon-ai/doompi-core/apiContracts");
|
|
6
|
+
let typebox = require("typebox");
|
|
7
|
+
//#region src/schemas/apiContracts.ts
|
|
8
|
+
const S = typebox.Type.String();
|
|
9
|
+
const B = typebox.Type.Boolean();
|
|
10
|
+
const O = typebox.Type.Optional;
|
|
11
|
+
const PlanDetailSchema = typebox.Type.Object({
|
|
12
|
+
path: S,
|
|
13
|
+
title: S,
|
|
14
|
+
writtenAt: S,
|
|
15
|
+
planId: O(S),
|
|
16
|
+
content: S,
|
|
17
|
+
hash: S,
|
|
18
|
+
unavailable: B,
|
|
19
|
+
reason: O(S)
|
|
20
|
+
});
|
|
21
|
+
const apiContracts = (0, _agimon_ai_doompi_core_apiContracts.defineApiContract)({
|
|
22
|
+
version: 1,
|
|
23
|
+
sockets: [],
|
|
24
|
+
dynamic: [],
|
|
25
|
+
http: [{
|
|
26
|
+
id: "plan.current",
|
|
27
|
+
scope: "session",
|
|
28
|
+
basePath: "plans",
|
|
29
|
+
path: "/current",
|
|
30
|
+
method: "GET",
|
|
31
|
+
authentication: "owner",
|
|
32
|
+
description: "Read the current plan.",
|
|
33
|
+
responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(PlanDetailSchema)
|
|
34
|
+
}, {
|
|
35
|
+
id: "plan.save",
|
|
36
|
+
scope: "session",
|
|
37
|
+
basePath: "plans",
|
|
38
|
+
path: "/content",
|
|
39
|
+
method: "PUT",
|
|
40
|
+
authentication: "owner",
|
|
41
|
+
description: "Save the plan if its hash has not changed.",
|
|
42
|
+
body: {
|
|
43
|
+
required: true,
|
|
44
|
+
contentType: "application/json",
|
|
45
|
+
schema: typebox.Type.Object({
|
|
46
|
+
expectedHash: S,
|
|
47
|
+
content: S
|
|
48
|
+
})
|
|
49
|
+
},
|
|
50
|
+
responses: (0, _agimon_ai_doompi_core_apiContracts.jsonApiResponses)(typebox.Type.Object({ hash: S }))
|
|
51
|
+
}]
|
|
52
|
+
});
|
|
53
|
+
//#endregion
|
|
54
|
+
exports.apiContracts = apiContracts;
|
|
55
|
+
exports.default = apiContracts;
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=apiContracts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiContracts.cjs","names":["Type","defineApiContract","jsonApiResponses"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/doompi-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nexport const PlanDetailSchema = Type.Object({\n path: S,\n title: S,\n writtenAt: S,\n planId: O(S),\n content: S,\n hash: S,\n unavailable: B,\n reason: O(S),\n});\nexport const apiContracts = defineApiContract({\n version: 1,\n sockets: [],\n dynamic: [],\n http: [\n {\n id: 'plan.current',\n scope: 'session',\n basePath: 'plans',\n path: '/current',\n method: 'GET',\n authentication: 'owner',\n description: 'Read the current plan.',\n responses: jsonApiResponses(PlanDetailSchema),\n },\n {\n id: 'plan.save',\n scope: 'session',\n basePath: 'plans',\n path: '/content',\n method: 'PUT',\n authentication: 'owner',\n description: 'Save the plan if its hash has not changed.',\n body: { required: true, contentType: 'application/json', schema: Type.Object({ expectedHash: S, content: S }) },\n responses: jsonApiResponses(Type.Object({ hash: S })),\n },\n ],\n});\nexport default apiContracts;\n"],"mappings":";;;;;;;AAGA,MAAM,IAAIA,QAAAA,KAAK,OAAO;AACtB,MAAM,IAAIA,QAAAA,KAAK,QAAQ;AACvB,MAAM,IAAIA,QAAAA,KAAK;AACf,MAAa,mBAAmBA,QAAAA,KAAK,OAAO;CAC1C,MAAM;CACN,OAAO;CACP,WAAW;CACX,QAAQ,EAAE,CAAC;CACX,SAAS;CACT,MAAM;CACN,aAAa;CACb,QAAQ,EAAE,CAAC;AACb,CAAC;AACD,MAAa,gBAAA,GAAeC,oCAAAA,kBAAAA,CAAkB;CAC5C,SAAS;CACT,SAAS,CAAC;CACV,SAAS,CAAC;CACV,MAAM,CACJ;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,aAAa;EACb,YAAA,GAAWC,oCAAAA,iBAAAA,CAAiB,gBAAgB;CAC9C,GACA;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,aAAa;EACb,MAAM;GAAE,UAAU;GAAM,aAAa;GAAoB,QAAQF,QAAAA,KAAK,OAAO;IAAE,cAAc;IAAG,SAAS;GAAE,CAAC;EAAE;EAC9G,YAAA,GAAWE,oCAAAA,iBAAAA,CAAiBF,QAAAA,KAAK,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;CACtD,CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Type } from "typebox";
|
|
2
|
+
//#region src/schemas/apiContracts.d.ts
|
|
3
|
+
export declare const apiContracts: {
|
|
4
|
+
version: 1;
|
|
5
|
+
protocols?: Record<string, string> | undefined;
|
|
6
|
+
schemas?: Record<string, boolean | object> | undefined;
|
|
7
|
+
http: {
|
|
8
|
+
id: string;
|
|
9
|
+
scope: "global" | "session" | "workspace";
|
|
10
|
+
basePath?: string | undefined;
|
|
11
|
+
path: string;
|
|
12
|
+
method: "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT";
|
|
13
|
+
description: string;
|
|
14
|
+
availability?: string | undefined;
|
|
15
|
+
authentication: "device" | "none" | "owner";
|
|
16
|
+
parameters?: {
|
|
17
|
+
name: string;
|
|
18
|
+
in: "header" | "path" | "query";
|
|
19
|
+
required: boolean;
|
|
20
|
+
schema: boolean | object;
|
|
21
|
+
}[] | undefined;
|
|
22
|
+
body?: {
|
|
23
|
+
contentType: string;
|
|
24
|
+
contentTypes?: string[] | undefined;
|
|
25
|
+
required: boolean;
|
|
26
|
+
schema: boolean | object;
|
|
27
|
+
} | undefined;
|
|
28
|
+
responses: Record<string, {
|
|
29
|
+
description: string;
|
|
30
|
+
contentType?: string | undefined;
|
|
31
|
+
schema?: boolean | object | undefined;
|
|
32
|
+
events?: Record<string, boolean | object> | undefined;
|
|
33
|
+
}>;
|
|
34
|
+
}[];
|
|
35
|
+
sockets: {
|
|
36
|
+
id: string;
|
|
37
|
+
scope: "global" | "session" | "workspace";
|
|
38
|
+
description: string;
|
|
39
|
+
availability?: string | undefined;
|
|
40
|
+
service: string;
|
|
41
|
+
member: string;
|
|
42
|
+
direction: "client-to-server" | "server-to-client";
|
|
43
|
+
kind: "channel" | "method" | "state";
|
|
44
|
+
input: boolean | object;
|
|
45
|
+
output?: boolean | object | undefined;
|
|
46
|
+
errors?: boolean | object | undefined;
|
|
47
|
+
}[];
|
|
48
|
+
dynamic: string[];
|
|
49
|
+
gaps?: string[] | undefined;
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { apiContracts as default };
|
|
53
|
+
//# sourceMappingURL=apiContracts.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiContracts.d.mts","names":[],"sources":["../src/schemas/apiContracts.ts"],"mappings":";;qBAgBa"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { defineApiContract, jsonApiResponses } from "@agimon-ai/doompi-core/apiContracts";
|
|
2
|
+
import { Type } from "typebox";
|
|
3
|
+
//#region src/schemas/apiContracts.ts
|
|
4
|
+
const S = Type.String();
|
|
5
|
+
const B = Type.Boolean();
|
|
6
|
+
const O = Type.Optional;
|
|
7
|
+
const PlanDetailSchema = Type.Object({
|
|
8
|
+
path: S,
|
|
9
|
+
title: S,
|
|
10
|
+
writtenAt: S,
|
|
11
|
+
planId: O(S),
|
|
12
|
+
content: S,
|
|
13
|
+
hash: S,
|
|
14
|
+
unavailable: B,
|
|
15
|
+
reason: O(S)
|
|
16
|
+
});
|
|
17
|
+
const apiContracts = defineApiContract({
|
|
18
|
+
version: 1,
|
|
19
|
+
sockets: [],
|
|
20
|
+
dynamic: [],
|
|
21
|
+
http: [{
|
|
22
|
+
id: "plan.current",
|
|
23
|
+
scope: "session",
|
|
24
|
+
basePath: "plans",
|
|
25
|
+
path: "/current",
|
|
26
|
+
method: "GET",
|
|
27
|
+
authentication: "owner",
|
|
28
|
+
description: "Read the current plan.",
|
|
29
|
+
responses: jsonApiResponses(PlanDetailSchema)
|
|
30
|
+
}, {
|
|
31
|
+
id: "plan.save",
|
|
32
|
+
scope: "session",
|
|
33
|
+
basePath: "plans",
|
|
34
|
+
path: "/content",
|
|
35
|
+
method: "PUT",
|
|
36
|
+
authentication: "owner",
|
|
37
|
+
description: "Save the plan if its hash has not changed.",
|
|
38
|
+
body: {
|
|
39
|
+
required: true,
|
|
40
|
+
contentType: "application/json",
|
|
41
|
+
schema: Type.Object({
|
|
42
|
+
expectedHash: S,
|
|
43
|
+
content: S
|
|
44
|
+
})
|
|
45
|
+
},
|
|
46
|
+
responses: jsonApiResponses(Type.Object({ hash: S }))
|
|
47
|
+
}]
|
|
48
|
+
});
|
|
49
|
+
//#endregion
|
|
50
|
+
export { apiContracts, apiContracts as default };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=apiContracts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract, jsonApiResponses } from '@agimon-ai/doompi-core/apiContracts';\nimport { Type } from 'typebox';\n\nconst S = Type.String();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nexport const PlanDetailSchema = Type.Object({\n path: S,\n title: S,\n writtenAt: S,\n planId: O(S),\n content: S,\n hash: S,\n unavailable: B,\n reason: O(S),\n});\nexport const apiContracts = defineApiContract({\n version: 1,\n sockets: [],\n dynamic: [],\n http: [\n {\n id: 'plan.current',\n scope: 'session',\n basePath: 'plans',\n path: '/current',\n method: 'GET',\n authentication: 'owner',\n description: 'Read the current plan.',\n responses: jsonApiResponses(PlanDetailSchema),\n },\n {\n id: 'plan.save',\n scope: 'session',\n basePath: 'plans',\n path: '/content',\n method: 'PUT',\n authentication: 'owner',\n description: 'Save the plan if its hash has not changed.',\n body: { required: true, contentType: 'application/json', schema: Type.Object({ expectedHash: S, content: S }) },\n responses: jsonApiResponses(Type.Object({ hash: S })),\n },\n ],\n});\nexport default apiContracts;\n"],"mappings":";;;AAGA,MAAM,IAAI,KAAK,OAAO;AACtB,MAAM,IAAI,KAAK,QAAQ;AACvB,MAAM,IAAI,KAAK;AACf,MAAa,mBAAmB,KAAK,OAAO;CAC1C,MAAM;CACN,OAAO;CACP,WAAW;CACX,QAAQ,EAAE,CAAC;CACX,SAAS;CACT,MAAM;CACN,aAAa;CACb,QAAQ,EAAE,CAAC;AACb,CAAC;AACD,MAAa,eAAe,kBAAkB;CAC5C,SAAS;CACT,SAAS,CAAC;CACV,SAAS,CAAC;CACV,MAAM,CACJ;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,aAAa;EACb,WAAW,iBAAiB,gBAAgB;CAC9C,GACA;EACE,IAAI;EACJ,OAAO;EACP,UAAU;EACV,MAAM;EACN,QAAQ;EACR,gBAAgB;EAChB,aAAa;EACb,MAAM;GAAE,UAAU;GAAM,aAAa;GAAoB,QAAQ,KAAK,OAAO;IAAE,cAAc;IAAG,SAAS;GAAE,CAAC;EAAE;EAC9G,WAAW,iBAAiB,KAAK,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;CACtD,CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
let _agimon_ai_doompi_config = require("@agimon-ai/doompi-config");
|
|
2
|
+
//#region src/schemas/plan/config.ts
|
|
3
|
+
const DEFAULT_PROJECT_TRUST = "ask";
|
|
4
|
+
function parseDoomConfig(content, filePath) {
|
|
5
|
+
const config = (0, _agimon_ai_doompi_config.parseDoomConfig)(content, filePath);
|
|
6
|
+
return config.modes ? { modes: config.modes } : {};
|
|
7
|
+
}
|
|
8
|
+
function mergeDoomConfigs(globalConfig, repositoryConfig) {
|
|
9
|
+
const merged = (0, _agimon_ai_doompi_config.mergeDoomConfigs)({
|
|
10
|
+
...globalConfig,
|
|
11
|
+
projectTrust: DEFAULT_PROJECT_TRUST
|
|
12
|
+
}, {
|
|
13
|
+
...repositoryConfig,
|
|
14
|
+
projectTrust: DEFAULT_PROJECT_TRUST
|
|
15
|
+
});
|
|
16
|
+
return merged.modes ? { modes: merged.modes } : {};
|
|
17
|
+
}
|
|
18
|
+
function loadDoomConfig(repoRoot, homeDirectory) {
|
|
19
|
+
const config = (0, _agimon_ai_doompi_config.loadDoomConfig)(repoRoot, homeDirectory);
|
|
20
|
+
return config.modes ? { modes: config.modes } : {};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
Object.defineProperty(exports, "loadDoomConfig", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function() {
|
|
26
|
+
return loadDoomConfig;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(exports, "mergeDoomConfigs", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function() {
|
|
32
|
+
return mergeDoomConfigs;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(exports, "parseDoomConfig", {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function() {
|
|
38
|
+
return parseDoomConfig;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=config-BdNUVev4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BdNUVev4.cjs","names":["parseSharedDoomConfig","mergeSharedDoomConfigs","loadSharedDoomConfig"],"sources":["../src/schemas/plan/config.ts"],"sourcesContent":["import {\n getHarnessState,\n globalDoomConfigPath,\n loadHarnessState,\n loadDoomConfig as loadSharedDoomConfig,\n mergeDoomConfigs as mergeSharedDoomConfigs,\n type PlanningAgentConfig,\n type PlanningModeConfig,\n type PlanningThinkingLevel,\n parsePlanningModeConfig,\n parseDoomConfig as parseSharedDoomConfig,\n repositoryDoomConfigPath,\n resolvePlanningPlansDirectory,\n} from '@agimon-ai/doompi-config';\n\nexport type { PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel };\n\nexport interface DoomConfig {\n modes?: {\n planning?: PlanningModeConfig;\n };\n}\n\nconst DEFAULT_PROJECT_TRUST = 'ask' as const;\n\nexport {\n getHarnessState,\n globalDoomConfigPath,\n loadHarnessState,\n parsePlanningModeConfig,\n repositoryDoomConfigPath,\n resolvePlanningPlansDirectory,\n};\n\nexport function parseDoomConfig(content: string, filePath: string): DoomConfig {\n const config = parseSharedDoomConfig(content, filePath);\n return config.modes ? { modes: config.modes } : {};\n}\n\nexport function mergeDoomConfigs(globalConfig: DoomConfig, repositoryConfig: DoomConfig): DoomConfig {\n const merged = mergeSharedDoomConfigs(\n { ...globalConfig, projectTrust: DEFAULT_PROJECT_TRUST },\n { ...repositoryConfig, projectTrust: DEFAULT_PROJECT_TRUST },\n );\n return merged.modes ? { modes: merged.modes } : {};\n}\n\nexport function loadDoomConfig(repoRoot: string, homeDirectory?: string): DoomConfig {\n const config = loadSharedDoomConfig(repoRoot, homeDirectory);\n return config.modes ? { modes: config.modes } : {};\n}\n"],"mappings":";;AAuBA,MAAM,wBAAwB;AAW9B,SAAgB,gBAAgB,SAAiB,UAA8B;CAC7E,MAAM,UAAA,GAASA,yBAAAA,gBAAAA,CAAsB,SAAS,QAAQ;CACtD,OAAO,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACnD;AAEA,SAAgB,iBAAiB,cAA0B,kBAA0C;CACnG,MAAM,UAAA,GAASC,yBAAAA,iBAAAA,CACb;EAAE,GAAG;EAAc,cAAc;CAAsB,GACvD;EAAE,GAAG;EAAkB,cAAc;CAAsB,CAC7D;CACA,OAAO,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACnD;AAEA,SAAgB,eAAe,UAAkB,eAAoC;CACnF,MAAM,UAAA,GAASC,yBAAAA,eAAAA,CAAqB,UAAU,aAAa;CAC3D,OAAO,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACnD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel, getHarnessState, globalDoomConfigPath as globalDoomConfigPath$1, loadHarnessState, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "@agimon-ai/doompi-config";
|
|
2
|
+
//#region src/schemas/plan/config.d.ts
|
|
3
|
+
interface DoomConfig {
|
|
4
|
+
modes?: {
|
|
5
|
+
planning?: PlanningModeConfig;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
declare function parseDoomConfig$1(content: string, filePath: string): DoomConfig;
|
|
9
|
+
declare function mergeDoomConfigs$1(globalConfig: DoomConfig, repositoryConfig: DoomConfig): DoomConfig;
|
|
10
|
+
declare function loadDoomConfig$1(repoRoot: string, homeDirectory?: string): DoomConfig;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { getHarnessState as a, loadHarnessState as c, parsePlanningModeConfig as d, repositoryDoomConfigPath as f, PlanningThinkingLevel as i, mergeDoomConfigs$1 as l, PlanningAgentConfig as n, globalDoomConfigPath$1 as o, resolvePlanningPlansDirectory as p, PlanningModeConfig as r, loadDoomConfig$1 as s, DoomConfig as t, parseDoomConfig$1 as u };
|
|
13
|
+
//# sourceMappingURL=config-CYzUW54g.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CYzUW54g.d.mts","names":[],"sources":["../src/schemas/plan/config.ts"],"mappings":";;UAiBiB;EACf;IACE,WAAW;;;iBAeC,kBAAgB,iBAAiB,mBAAmB;iBAKpD,mBAAiB,cAAc,YAAY,kBAAkB,aAAa;iBAQ1E,iBAAe,kBAAkB,yBAAyB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getHarnessState, globalDoomConfigPath as globalDoomConfigPath$1, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory } from "@agimon-ai/doompi-config";
|
|
2
|
+
//#region src/schemas/plan/config.ts
|
|
3
|
+
const DEFAULT_PROJECT_TRUST = "ask";
|
|
4
|
+
function parseDoomConfig$1(content, filePath) {
|
|
5
|
+
const config = parseDoomConfig(content, filePath);
|
|
6
|
+
return config.modes ? { modes: config.modes } : {};
|
|
7
|
+
}
|
|
8
|
+
function mergeDoomConfigs$1(globalConfig, repositoryConfig) {
|
|
9
|
+
const merged = mergeDoomConfigs({
|
|
10
|
+
...globalConfig,
|
|
11
|
+
projectTrust: DEFAULT_PROJECT_TRUST
|
|
12
|
+
}, {
|
|
13
|
+
...repositoryConfig,
|
|
14
|
+
projectTrust: DEFAULT_PROJECT_TRUST
|
|
15
|
+
});
|
|
16
|
+
return merged.modes ? { modes: merged.modes } : {};
|
|
17
|
+
}
|
|
18
|
+
function loadDoomConfig$1(repoRoot, homeDirectory) {
|
|
19
|
+
const config = loadDoomConfig(repoRoot, homeDirectory);
|
|
20
|
+
return config.modes ? { modes: config.modes } : {};
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { mergeDoomConfigs$1 as a, repositoryDoomConfigPath as c, loadHarnessState as i, resolvePlanningPlansDirectory as l, globalDoomConfigPath$1 as n, parseDoomConfig$1 as o, loadDoomConfig$1 as r, parsePlanningModeConfig as s, getHarnessState as t };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=config-Y8TZgcXt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-Y8TZgcXt.mjs","names":["parseDoomConfig","parseSharedDoomConfig","mergeDoomConfigs","mergeSharedDoomConfigs","loadDoomConfig","loadSharedDoomConfig"],"sources":["../src/schemas/plan/config.ts"],"sourcesContent":["import {\n getHarnessState,\n globalDoomConfigPath,\n loadHarnessState,\n loadDoomConfig as loadSharedDoomConfig,\n mergeDoomConfigs as mergeSharedDoomConfigs,\n type PlanningAgentConfig,\n type PlanningModeConfig,\n type PlanningThinkingLevel,\n parsePlanningModeConfig,\n parseDoomConfig as parseSharedDoomConfig,\n repositoryDoomConfigPath,\n resolvePlanningPlansDirectory,\n} from '@agimon-ai/doompi-config';\n\nexport type { PlanningAgentConfig, PlanningModeConfig, PlanningThinkingLevel };\n\nexport interface DoomConfig {\n modes?: {\n planning?: PlanningModeConfig;\n };\n}\n\nconst DEFAULT_PROJECT_TRUST = 'ask' as const;\n\nexport {\n getHarnessState,\n globalDoomConfigPath,\n loadHarnessState,\n parsePlanningModeConfig,\n repositoryDoomConfigPath,\n resolvePlanningPlansDirectory,\n};\n\nexport function parseDoomConfig(content: string, filePath: string): DoomConfig {\n const config = parseSharedDoomConfig(content, filePath);\n return config.modes ? { modes: config.modes } : {};\n}\n\nexport function mergeDoomConfigs(globalConfig: DoomConfig, repositoryConfig: DoomConfig): DoomConfig {\n const merged = mergeSharedDoomConfigs(\n { ...globalConfig, projectTrust: DEFAULT_PROJECT_TRUST },\n { ...repositoryConfig, projectTrust: DEFAULT_PROJECT_TRUST },\n );\n return merged.modes ? { modes: merged.modes } : {};\n}\n\nexport function loadDoomConfig(repoRoot: string, homeDirectory?: string): DoomConfig {\n const config = loadSharedDoomConfig(repoRoot, homeDirectory);\n return config.modes ? { modes: config.modes } : {};\n}\n"],"mappings":";;AAuBA,MAAM,wBAAwB;AAW9B,SAAgBA,kBAAgB,SAAiB,UAA8B;CAC7E,MAAM,SAASC,gBAAsB,SAAS,QAAQ;CACtD,OAAO,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACnD;AAEA,SAAgBC,mBAAiB,cAA0B,kBAA0C;CACnG,MAAM,SAASC,iBACb;EAAE,GAAG;EAAc,cAAc;CAAsB,GACvD;EAAE,GAAG;EAAkB,cAAc;CAAsB,CAC7D;CACA,OAAO,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACnD;AAEA,SAAgBC,iBAAe,UAAkB,eAAoC;CACnF,MAAM,SAASC,eAAqB,UAAU,aAAa;CAC3D,OAAO,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AACnD"}
|
package/dist/config.cjs
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_config = require("./config-BdNUVev4.cjs");
|
|
3
|
+
let _agimon_ai_doompi_config = require("@agimon-ai/doompi-config");
|
|
4
|
+
exports.getHarnessState = _agimon_ai_doompi_config.getHarnessState;
|
|
5
|
+
exports.globalDoomConfigPath = _agimon_ai_doompi_config.globalDoomConfigPath;
|
|
6
|
+
exports.loadDoomConfig = require_config.loadDoomConfig;
|
|
7
|
+
exports.loadHarnessState = _agimon_ai_doompi_config.loadHarnessState;
|
|
8
|
+
exports.mergeDoomConfigs = require_config.mergeDoomConfigs;
|
|
9
|
+
exports.parseDoomConfig = require_config.parseDoomConfig;
|
|
10
|
+
exports.parsePlanningModeConfig = _agimon_ai_doompi_config.parsePlanningModeConfig;
|
|
11
|
+
exports.repositoryDoomConfigPath = _agimon_ai_doompi_config.repositoryDoomConfigPath;
|
|
12
|
+
exports.resolvePlanningPlansDirectory = _agimon_ai_doompi_config.resolvePlanningPlansDirectory;
|
package/dist/config.d.mts
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
//#region src/config.d.ts
|
|
4
|
-
interface DoomConfig {
|
|
5
|
-
modes?: {
|
|
6
|
-
planning?: PlanningModeConfig;
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
declare function parseDoomConfig$1(content: string, filePath: string): DoomConfig;
|
|
10
|
-
declare function mergeDoomConfigs$1(globalConfig: DoomConfig, repositoryConfig: DoomConfig): DoomConfig;
|
|
11
|
-
declare function loadDoomConfig$1(repoRoot: string, homeDirectory?: string): DoomConfig;
|
|
12
|
-
//#endregion
|
|
13
|
-
export { DoomConfig, type PlanningAgentConfig, type PlanningModeConfig, type PlanningThinkingLevel, getHarnessState, globalDoomConfigPath$1 as globalDoomConfigPath, loadDoomConfig$1 as loadDoomConfig, loadHarnessState, mergeDoomConfigs$1 as mergeDoomConfigs, parseDoomConfig$1 as parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
|
|
14
|
-
//# sourceMappingURL=config.d.mts.map
|
|
1
|
+
import { a as getHarnessState, c as loadHarnessState, d as parsePlanningModeConfig, f as repositoryDoomConfigPath, i as PlanningThinkingLevel, l as mergeDoomConfigs, n as PlanningAgentConfig, o as globalDoomConfigPath, p as resolvePlanningPlansDirectory, r as PlanningModeConfig, s as loadDoomConfig, t as DoomConfig, u as parseDoomConfig } from "./config-CYzUW54g.mjs";
|
|
2
|
+
export { DoomConfig, type PlanningAgentConfig, type PlanningModeConfig, type PlanningThinkingLevel, getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
|
package/dist/config.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
|
|
1
|
+
import { a as mergeDoomConfigs, c as repositoryDoomConfigPath, i as loadHarnessState, l as resolvePlanningPlansDirectory, n as globalDoomConfigPath, o as parseDoomConfig, r as loadDoomConfig, s as parsePlanningModeConfig, t as getHarnessState } from "./config-Y8TZgcXt.mjs";
|
|
2
|
+
export { getHarnessState, globalDoomConfigPath, loadDoomConfig, loadHarnessState, mergeDoomConfigs, parseDoomConfig, parsePlanningModeConfig, repositoryDoomConfigPath, resolvePlanningPlansDirectory };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { defineMcpWidget } from "@agimon-ai/doompi-core/web";
|
|
2
|
+
import { McpToolFields, McpToolFrame, McpToolOutput } from "@agimon-ai/doompi-web-components";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region src/extensions/workspaces/sessions/(frontend)/tool/complete_plan.mcp.tsx
|
|
5
|
+
function CompletePlanMcpWidget(props) {
|
|
6
|
+
return /* @__PURE__ */ jsx(McpToolFrame, {
|
|
7
|
+
...props,
|
|
8
|
+
title: "Request plan approval",
|
|
9
|
+
children: /* @__PURE__ */ jsx(McpToolOutput, { result: props.result })
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
var complete_plan_mcp_default = defineMcpWidget(CompletePlanMcpWidget);
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/extensions/workspaces/sessions/(frontend)/tool/record_debug_evidence.mcp.tsx
|
|
15
|
+
function RecordDebugEvidenceMcpWidget(props) {
|
|
16
|
+
return /* @__PURE__ */ jsxs(McpToolFrame, {
|
|
17
|
+
...props,
|
|
18
|
+
title: "Record debug evidence",
|
|
19
|
+
children: [/* @__PURE__ */ jsx(McpToolFields, { fields: [
|
|
20
|
+
["Issue", props.args.issue],
|
|
21
|
+
["Expected behavior", props.args.expectedBehavior],
|
|
22
|
+
["Observed behavior", props.args.actualBehavior]
|
|
23
|
+
] }), /* @__PURE__ */ jsx(McpToolOutput, { result: props.result })]
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
var record_debug_evidence_mcp_default = defineMcpWidget(RecordDebugEvidenceMcpWidget);
|
|
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
|
+
//#region src/extensions/workspaces/sessions/(frontend)/tool/write_plan.mcp.tsx
|
|
39
|
+
function WritePlanMcpWidget(props) {
|
|
40
|
+
return /* @__PURE__ */ jsxs(McpToolFrame, {
|
|
41
|
+
...props,
|
|
42
|
+
title: "Save plan",
|
|
43
|
+
children: [/* @__PURE__ */ jsx(McpToolFields, { fields: [["Characters", typeof props.args.markdown === "string" ? props.args.markdown.length : void 0]] }), /* @__PURE__ */ jsx(McpToolOutput, { result: props.result })]
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region generated/mcp-ui.ts
|
|
48
|
+
const widgets = {
|
|
49
|
+
"@agimon-ai/doompi-plan/complete_plan": complete_plan_mcp_default,
|
|
50
|
+
"@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
|
+
"@agimon-ai/doompi-plan/write_plan": defineMcpWidget(WritePlanMcpWidget)
|
|
53
|
+
};
|
|
54
|
+
//#endregion
|
|
55
|
+
export { widgets };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=mcp-ui.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-ui.mjs","names":["Widget0","Widget1","Widget2","Widget3"],"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/run_fable_plan.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 RunFablePlanMcpWidget(props: DoomMcpWidgetProps) {\n return (\n <McpToolFrame {...props} title=\"Prepare plan\">\n <McpToolFields\n fields={[\n ['Goals', props.args.goal],\n ['Constraints', props.args.constraints],\n ]}\n />\n <McpToolOutput result={props.result} />\n </McpToolFrame>\n );\n}\n\nexport default defineMcpWidget(RunFablePlanMcpWidget);\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/run_fable_plan.mcp\";\nimport Widget3 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/run_fable_plan\": Widget2,\n \"@agimon-ai/doompi-plan/write_plan\": Widget3,\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,sBAAsB,OAA2B;CACxD,OACE,qBAAC,cAAD;EAAc,GAAI;EAAO,OAAM;EAA/B,UAAA,CACE,oBAAC,eAAD,EACE,QAAQ,CACN,CAAC,SAAS,MAAM,KAAK,IAAI,GACzB,CAAC,eAAe,MAAM,KAAK,WAAW,CACxC,EACD,CAAA,GACD,oBAAC,eAAD,EAAe,QAAQ,MAAM,OAAS,CAAA,CAC1B;;AAElB;AAEA,IAAA,6BAAe,gBAAgB,qBAAqB;;;ACdpD,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;;;ACJA,MAAa,UAAuE;CAClF,wCAAwCA;CACxC,gDAAgDC;CAChD,yCAAyCC;CACzC,qCDEa,gBAAgB,kBCFQC;AACvC"}
|