@pantion/dialogs 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dialogs/dialog-builder/convergence-rules.md +64 -0
  2. package/dialogs/dialog-builder/dialog.json +10 -0
  3. package/dialogs/dialog-builder/prompts/convergence-intro.md +21 -0
  4. package/dialogs/dialog-builder/prompts/translate-intro.md +17 -0
  5. package/dialogs/dialog-builder/translate.md +46 -0
  6. package/dialogs/image/convergence-rules.md +55 -0
  7. package/dialogs/image/dialog.json +12 -0
  8. package/dialogs/image/prompts/convergence-intro.md +25 -0
  9. package/dialogs/image/prompts/translate-intro.md +37 -0
  10. package/dialogs/image/translate.md +67 -0
  11. package/dialogs/software/convergence-rules.md +29 -0
  12. package/dialogs/software/dialog.json +12 -0
  13. package/dialogs/software/prompts/convergence-intro.md +22 -0
  14. package/dialogs/software/prompts/translate-intro.md +19 -0
  15. package/dialogs/software/translate.md +74 -0
  16. package/dialogs/software-brownfield/convergence-rules.md +109 -0
  17. package/dialogs/software-brownfield/dialog.json +12 -0
  18. package/dialogs/software-brownfield/prompts/convergence-intro.md +26 -0
  19. package/dialogs/software-brownfield/prompts/translate-intro.md +13 -0
  20. package/dialogs/software-brownfield/translate.md +56 -0
  21. package/dialogs/video/convergence-rules.md +96 -0
  22. package/dialogs/video/dialog.json +12 -0
  23. package/dialogs/video/prompts/convergence-intro.md +28 -0
  24. package/dialogs/video/prompts/translate-intro.md +41 -0
  25. package/dialogs/video/translate.md +81 -0
  26. package/dist/core/canon/index-manager.d.ts +27 -0
  27. package/dist/core/canon/index-manager.d.ts.map +1 -0
  28. package/dist/core/canon/index-manager.js +127 -0
  29. package/dist/core/canon/index-manager.js.map +1 -0
  30. package/dist/core/canon/manifest.d.ts +21 -0
  31. package/dist/core/canon/manifest.d.ts.map +1 -0
  32. package/dist/core/canon/manifest.js +56 -0
  33. package/dist/core/canon/manifest.js.map +1 -0
  34. package/dist/core/canon/validator.d.ts +12 -0
  35. package/dist/core/canon/validator.d.ts.map +1 -0
  36. package/dist/core/canon/validator.js +320 -0
  37. package/dist/core/canon/validator.js.map +1 -0
  38. package/dist/core/dialog/canon-writer.d.ts +22 -0
  39. package/dist/core/dialog/canon-writer.d.ts.map +1 -0
  40. package/dist/core/dialog/canon-writer.js +96 -0
  41. package/dist/core/dialog/canon-writer.js.map +1 -0
  42. package/dist/core/dialog/registry.d.ts +10 -0
  43. package/dist/core/dialog/registry.d.ts.map +1 -0
  44. package/dist/core/dialog/registry.js +102 -0
  45. package/dist/core/dialog/registry.js.map +1 -0
  46. package/dist/core/dialog/selector.d.ts +11 -0
  47. package/dist/core/dialog/selector.d.ts.map +1 -0
  48. package/dist/core/dialog/selector.js +32 -0
  49. package/dist/core/dialog/selector.js.map +1 -0
  50. package/dist/core/index.d.ts +20 -0
  51. package/dist/core/index.d.ts.map +1 -0
  52. package/dist/core/index.js +30 -0
  53. package/dist/core/index.js.map +1 -0
  54. package/dist/core/protocol/convergence.d.ts +11 -0
  55. package/dist/core/protocol/convergence.d.ts.map +1 -0
  56. package/dist/core/protocol/convergence.js +30 -0
  57. package/dist/core/protocol/convergence.js.map +1 -0
  58. package/dist/core/protocol/loader.d.ts +6 -0
  59. package/dist/core/protocol/loader.d.ts.map +1 -0
  60. package/dist/core/protocol/loader.js +31 -0
  61. package/dist/core/protocol/loader.js.map +1 -0
  62. package/dist/core/protocol/stamp-parser.d.ts +46 -0
  63. package/dist/core/protocol/stamp-parser.d.ts.map +1 -0
  64. package/dist/core/protocol/stamp-parser.js +333 -0
  65. package/dist/core/protocol/stamp-parser.js.map +1 -0
  66. package/dist/core/protocol/system-prompt.d.ts +16 -0
  67. package/dist/core/protocol/system-prompt.d.ts.map +1 -0
  68. package/dist/core/protocol/system-prompt.js +68 -0
  69. package/dist/core/protocol/system-prompt.js.map +1 -0
  70. package/dist/core/session/canon-writer.d.ts +33 -0
  71. package/dist/core/session/canon-writer.d.ts.map +1 -0
  72. package/dist/core/session/canon-writer.js +152 -0
  73. package/dist/core/session/canon-writer.js.map +1 -0
  74. package/dist/core/session/manager.d.ts +10 -0
  75. package/dist/core/session/manager.d.ts.map +1 -0
  76. package/dist/core/session/manager.js +105 -0
  77. package/dist/core/session/manager.js.map +1 -0
  78. package/dist/core/skill/canon-writer.d.ts +22 -0
  79. package/dist/core/skill/canon-writer.d.ts.map +1 -0
  80. package/dist/core/skill/canon-writer.js +96 -0
  81. package/dist/core/skill/canon-writer.js.map +1 -0
  82. package/dist/core/skill/registry.d.ts +10 -0
  83. package/dist/core/skill/registry.d.ts.map +1 -0
  84. package/dist/core/skill/registry.js +102 -0
  85. package/dist/core/skill/registry.js.map +1 -0
  86. package/dist/core/skill/selector.d.ts +11 -0
  87. package/dist/core/skill/selector.d.ts.map +1 -0
  88. package/dist/core/skill/selector.js +32 -0
  89. package/dist/core/skill/selector.js.map +1 -0
  90. package/dist/core/soul/registry.d.ts +10 -0
  91. package/dist/core/soul/registry.d.ts.map +1 -0
  92. package/dist/core/soul/registry.js +73 -0
  93. package/dist/core/soul/registry.js.map +1 -0
  94. package/dist/core/types.d.ts +154 -0
  95. package/dist/core/types.d.ts.map +1 -0
  96. package/dist/core/types.js +6 -0
  97. package/dist/core/types.js.map +1 -0
  98. package/dist/core/utils/fs.d.ts +14 -0
  99. package/dist/core/utils/fs.d.ts.map +1 -0
  100. package/dist/core/utils/fs.js +44 -0
  101. package/dist/core/utils/fs.js.map +1 -0
  102. package/dist/core/utils/project-detect.d.ts +3 -0
  103. package/dist/core/utils/project-detect.d.ts.map +1 -0
  104. package/dist/core/utils/project-detect.js +38 -0
  105. package/dist/core/utils/project-detect.js.map +1 -0
  106. package/dist/feature-set.d.ts +14 -0
  107. package/dist/feature-set.d.ts.map +1 -0
  108. package/dist/feature-set.js +38 -0
  109. package/dist/feature-set.js.map +1 -0
  110. package/dist/index.d.ts +3 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/index.js +56 -0
  113. package/dist/index.js.map +1 -0
  114. package/dist/prompts/convergence-prompts.d.ts +4 -0
  115. package/dist/prompts/convergence-prompts.d.ts.map +1 -0
  116. package/dist/prompts/convergence-prompts.js +76 -0
  117. package/dist/prompts/convergence-prompts.js.map +1 -0
  118. package/dist/prompts/index.d.ts +4 -0
  119. package/dist/prompts/index.d.ts.map +1 -0
  120. package/dist/prompts/index.js +7 -0
  121. package/dist/prompts/index.js.map +1 -0
  122. package/dist/prompts/workflow-prompts.d.ts +9 -0
  123. package/dist/prompts/workflow-prompts.d.ts.map +1 -0
  124. package/dist/prompts/workflow-prompts.js +265 -0
  125. package/dist/prompts/workflow-prompts.js.map +1 -0
  126. package/dist/resources/canon-resources.d.ts +4 -0
  127. package/dist/resources/canon-resources.d.ts.map +1 -0
  128. package/dist/resources/canon-resources.js +164 -0
  129. package/dist/resources/canon-resources.js.map +1 -0
  130. package/dist/server.d.ts +9 -0
  131. package/dist/server.d.ts.map +1 -0
  132. package/dist/server.js +47 -0
  133. package/dist/server.js.map +1 -0
  134. package/dist/tools/amend.d.ts +4 -0
  135. package/dist/tools/amend.d.ts.map +1 -0
  136. package/dist/tools/amend.js +106 -0
  137. package/dist/tools/amend.js.map +1 -0
  138. package/dist/tools/approve.d.ts +4 -0
  139. package/dist/tools/approve.d.ts.map +1 -0
  140. package/dist/tools/approve.js +60 -0
  141. package/dist/tools/approve.js.map +1 -0
  142. package/dist/tools/check-convergence.d.ts +4 -0
  143. package/dist/tools/check-convergence.d.ts.map +1 -0
  144. package/dist/tools/check-convergence.js +50 -0
  145. package/dist/tools/check-convergence.js.map +1 -0
  146. package/dist/tools/check.d.ts +4 -0
  147. package/dist/tools/check.d.ts.map +1 -0
  148. package/dist/tools/check.js +190 -0
  149. package/dist/tools/check.js.map +1 -0
  150. package/dist/tools/create-dialog.d.ts +4 -0
  151. package/dist/tools/create-dialog.d.ts.map +1 -0
  152. package/dist/tools/create-dialog.js +58 -0
  153. package/dist/tools/create-dialog.js.map +1 -0
  154. package/dist/tools/create-skill.d.ts +4 -0
  155. package/dist/tools/create-skill.d.ts.map +1 -0
  156. package/dist/tools/create-skill.js +58 -0
  157. package/dist/tools/create-skill.js.map +1 -0
  158. package/dist/tools/decompose.d.ts +4 -0
  159. package/dist/tools/decompose.d.ts.map +1 -0
  160. package/dist/tools/decompose.js +56 -0
  161. package/dist/tools/decompose.js.map +1 -0
  162. package/dist/tools/index.d.ts +4 -0
  163. package/dist/tools/index.d.ts.map +1 -0
  164. package/dist/tools/index.js +49 -0
  165. package/dist/tools/index.js.map +1 -0
  166. package/dist/tools/list-canons.d.ts +4 -0
  167. package/dist/tools/list-canons.d.ts.map +1 -0
  168. package/dist/tools/list-canons.js +28 -0
  169. package/dist/tools/list-canons.js.map +1 -0
  170. package/dist/tools/migrate.d.ts +4 -0
  171. package/dist/tools/migrate.d.ts.map +1 -0
  172. package/dist/tools/migrate.js +38 -0
  173. package/dist/tools/migrate.js.map +1 -0
  174. package/dist/tools/onboard.d.ts +4 -0
  175. package/dist/tools/onboard.d.ts.map +1 -0
  176. package/dist/tools/onboard.js +27 -0
  177. package/dist/tools/onboard.js.map +1 -0
  178. package/dist/tools/reconverge.d.ts +4 -0
  179. package/dist/tools/reconverge.d.ts.map +1 -0
  180. package/dist/tools/reconverge.js +68 -0
  181. package/dist/tools/reconverge.js.map +1 -0
  182. package/dist/tools/redialog.d.ts +4 -0
  183. package/dist/tools/redialog.d.ts.map +1 -0
  184. package/dist/tools/redialog.js +63 -0
  185. package/dist/tools/redialog.js.map +1 -0
  186. package/dist/tools/reflect.d.ts +4 -0
  187. package/dist/tools/reflect.d.ts.map +1 -0
  188. package/dist/tools/reflect.js +86 -0
  189. package/dist/tools/reflect.js.map +1 -0
  190. package/dist/tools/reject.d.ts +4 -0
  191. package/dist/tools/reject.d.ts.map +1 -0
  192. package/dist/tools/reject.js +57 -0
  193. package/dist/tools/reject.js.map +1 -0
  194. package/dist/tools/reskill.d.ts +4 -0
  195. package/dist/tools/reskill.d.ts.map +1 -0
  196. package/dist/tools/reskill.js +63 -0
  197. package/dist/tools/reskill.js.map +1 -0
  198. package/dist/tools/resume.d.ts +4 -0
  199. package/dist/tools/resume.d.ts.map +1 -0
  200. package/dist/tools/resume.js +56 -0
  201. package/dist/tools/resume.js.map +1 -0
  202. package/dist/tools/reverse.d.ts +4 -0
  203. package/dist/tools/reverse.d.ts.map +1 -0
  204. package/dist/tools/reverse.js +32 -0
  205. package/dist/tools/reverse.js.map +1 -0
  206. package/dist/tools/save-canon.d.ts +4 -0
  207. package/dist/tools/save-canon.d.ts.map +1 -0
  208. package/dist/tools/save-canon.js +97 -0
  209. package/dist/tools/save-canon.js.map +1 -0
  210. package/dist/tools/start.d.ts +4 -0
  211. package/dist/tools/start.d.ts.map +1 -0
  212. package/dist/tools/start.js +83 -0
  213. package/dist/tools/start.js.map +1 -0
  214. package/dist/tools/translate.d.ts +4 -0
  215. package/dist/tools/translate.d.ts.map +1 -0
  216. package/dist/tools/translate.js +102 -0
  217. package/dist/tools/translate.js.map +1 -0
  218. package/dist/tools/update.d.ts +4 -0
  219. package/dist/tools/update.d.ts.map +1 -0
  220. package/dist/tools/update.js +42 -0
  221. package/dist/tools/update.js.map +1 -0
  222. package/dist/tools/validate.d.ts +4 -0
  223. package/dist/tools/validate.d.ts.map +1 -0
  224. package/dist/tools/validate.js +86 -0
  225. package/dist/tools/validate.js.map +1 -0
  226. package/dist/utils/response.d.ts +12 -0
  227. package/dist/utils/response.d.ts.map +1 -0
  228. package/dist/utils/response.js +18 -0
  229. package/dist/utils/response.js.map +1 -0
  230. package/package.json +37 -0
  231. package/protocol/commands/amend.md +188 -0
  232. package/protocol/commands/build.md +90 -0
  233. package/protocol/commands/check.md +255 -0
  234. package/protocol/commands/create-dialog.md +81 -0
  235. package/protocol/commands/decompose.md +230 -0
  236. package/protocol/commands/dialog.md +173 -0
  237. package/protocol/commands/help.md +121 -0
  238. package/protocol/commands/migrate.md +173 -0
  239. package/protocol/commands/onboard.md +210 -0
  240. package/protocol/commands/quick.md +170 -0
  241. package/protocol/commands/redialog.md +73 -0
  242. package/protocol/commands/reflect.md +136 -0
  243. package/protocol/commands/resume.md +148 -0
  244. package/protocol/commands/reverse.md +312 -0
  245. package/protocol/commands/start.md +220 -0
  246. package/protocol/commands/translate.md +157 -0
  247. package/protocol/commands/update.md +205 -0
  248. package/protocol/core-advanced.md +188 -0
  249. package/protocol/core.md +274 -0
  250. package/protocol/pantion-future-prompt.md +88 -0
  251. package/protocol/pantion-intent.md +78 -0
  252. package/protocol/templates/acceptance-tests.md +116 -0
  253. package/protocol/templates/behavior-map.md +135 -0
  254. package/protocol/templates/traceability-map.md +56 -0
  255. package/souls/beginner/rules.md +34 -0
  256. package/souls/beginner/soul.json +6 -0
  257. package/souls/default/rules.md +25 -0
  258. package/souls/default/soul.json +6 -0
  259. package/souls/young/rules.md +67 -0
  260. package/souls/young/soul.json +6 -0
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ import { getDialog, assembleSystemPrompt, createSession, saveSession, getSoul, assertSafeName, } from '../core/index.js';
3
+ import { success, error } from '../utils/response.js';
4
+ export function registerCreateDialog(server, context) {
5
+ server.tool('pantion_create-dialog', 'Start a new dialog creation dialog using the dialog-builder meta-dialog. Converges on domain knowledge to produce a complete Pantion dialog.', {
6
+ dialog_name: z.string().describe('Name for the new dialog (e.g. "music-production", "legal-contract")'),
7
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
8
+ soul: z.string().optional().describe('Interaction style (e.g. "default", "beginner")'),
9
+ }, async ({ dialog_name, project_path, soul }) => {
10
+ try {
11
+ assertSafeName(dialog_name);
12
+ const projectPath = project_path ?? context.projectPath;
13
+ // Load the dialog-builder meta-dialog
14
+ const dialogBuilder = getDialog('dialog-builder', projectPath, context.dialogsDir);
15
+ if (!dialogBuilder) {
16
+ return error('Skill-builder meta-dialog not found. Ensure it is installed in dialogs/dialog-builder/.');
17
+ }
18
+ // Load soul (default if not specified)
19
+ const soulObj = soul
20
+ ? getSoul(soul, projectPath, context.soulsDir)
21
+ : getSoul('default', projectPath, context.soulsDir);
22
+ // Assemble convergence instructions using dialog-builder rules
23
+ const convergenceInstructions = assembleSystemPrompt({
24
+ mode: 'start',
25
+ dialogRules: dialogBuilder.convergenceRules,
26
+ soulRules: soulObj?.rules,
27
+ protocolDir: context.protocolDir,
28
+ });
29
+ // Create a session marked as dialog creation
30
+ const sessionName = `create-dialog-${dialog_name}`;
31
+ const session = createSession(projectPath, sessionName, convergenceInstructions);
32
+ session.dialog = 'dialog-builder';
33
+ session.canonType = 'dialog';
34
+ session.targetDialogName = dialog_name;
35
+ if (soulObj)
36
+ session.soul = soulObj.manifest.name;
37
+ saveSession(projectPath, session);
38
+ return success({
39
+ session_id: session.id,
40
+ dialog_name,
41
+ meta_dialog: {
42
+ name: dialogBuilder.manifest.name,
43
+ displayName: dialogBuilder.manifest.displayName,
44
+ },
45
+ soul: soulObj ? {
46
+ name: soulObj.manifest.name,
47
+ displayName: soulObj.manifest.displayName,
48
+ } : null,
49
+ convergence_instructions: convergenceInstructions,
50
+ first_question: `I'm going to help you create a new Pantion dialog called "${dialog_name}". This dialog will teach Pantion how to converge in your domain.\n\nLet's start: what domain does this dialog cover, and what does it need to know that a general-purpose agent would miss?`,
51
+ });
52
+ }
53
+ catch (err) {
54
+ return error(err instanceof Error ? err.message : String(err));
55
+ }
56
+ });
57
+ }
58
+ //# sourceMappingURL=create-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dialog.js","sourceRoot":"","sources":["../../src/tools/create-dialog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerCreateSkill(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=create-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-skill.d.ts","sourceRoot":"","sources":["../../src/tools/create-skill.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAWlD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA6DnF"}
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ import { getSkill, assembleSystemPrompt, createSession, saveSession, getSoul, assertSafeName, } from '../core/index.js';
3
+ import { success, error } from '../utils/response.js';
4
+ export function registerCreateSkill(server, context) {
5
+ server.tool('pantion_create-skill', 'Start a new skill creation dialog using the skill-builder meta-skill. Converges on domain knowledge to produce a complete Pantion skill.', {
6
+ skill_name: z.string().describe('Name for the new skill (e.g. "music-production", "legal-contract")'),
7
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
8
+ soul: z.string().optional().describe('Interaction style (e.g. "default", "beginner")'),
9
+ }, async ({ skill_name, project_path, soul }) => {
10
+ try {
11
+ assertSafeName(skill_name);
12
+ const projectPath = project_path ?? context.projectPath;
13
+ // Load the skill-builder meta-skill
14
+ const skillBuilder = getSkill('skill-builder', projectPath, context.skillsDir);
15
+ if (!skillBuilder) {
16
+ return error('Skill-builder meta-skill not found. Ensure it is installed in skills/skill-builder/.');
17
+ }
18
+ // Load soul (default if not specified)
19
+ const soulObj = soul
20
+ ? getSoul(soul, projectPath, context.soulsDir)
21
+ : getSoul('default', projectPath, context.soulsDir);
22
+ // Assemble convergence instructions using skill-builder rules
23
+ const convergenceInstructions = assembleSystemPrompt({
24
+ mode: 'start',
25
+ skillRules: skillBuilder.convergenceRules,
26
+ soulRules: soulObj?.rules,
27
+ protocolDir: context.protocolDir,
28
+ });
29
+ // Create a session marked as skill creation
30
+ const sessionName = `create-skill-${skill_name}`;
31
+ const session = createSession(projectPath, sessionName, convergenceInstructions);
32
+ session.skill = 'skill-builder';
33
+ session.canonType = 'skill';
34
+ session.targetSkillName = skill_name;
35
+ if (soulObj)
36
+ session.soul = soulObj.manifest.name;
37
+ saveSession(projectPath, session);
38
+ return success({
39
+ session_id: session.id,
40
+ skill_name,
41
+ meta_skill: {
42
+ name: skillBuilder.manifest.name,
43
+ displayName: skillBuilder.manifest.displayName,
44
+ },
45
+ soul: soulObj ? {
46
+ name: soulObj.manifest.name,
47
+ displayName: soulObj.manifest.displayName,
48
+ } : null,
49
+ convergence_instructions: convergenceInstructions,
50
+ first_question: `I'm going to help you create a new Pantion skill called "${skill_name}". This skill will teach Pantion how to converge in your domain.\n\nLet's start: what domain does this skill cover, and what does it need to know that a general-purpose agent would miss?`,
51
+ });
52
+ }
53
+ catch (err) {
54
+ return error(err instanceof Error ? err.message : String(err));
55
+ }
56
+ });
57
+ }
58
+ //# sourceMappingURL=create-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-skill.js","sourceRoot":"","sources":["../../src/tools/create-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerDecompose(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=decompose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../../src/tools/decompose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAalD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA8DjF"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { resolve } from 'node:path';
3
+ import { readFileSafe, canonDir, extractConvergenceStamp, assembleSystemPrompt, createSession, saveSession, assertSafeName, } from '../core/index.js';
4
+ import { success, error } from '../utils/response.js';
5
+ export function registerDecompose(server, context) {
6
+ server.tool('pantion_decompose', 'Decompose a converged canon into subsystems (architect, interface, and component canons). The canon must be CONVERGED before decomposition.', {
7
+ canon_name: z.string().describe('Name of the canon to decompose'),
8
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
9
+ }, async ({ canon_name, project_path }) => {
10
+ try {
11
+ const projectPath = project_path ?? context.projectPath;
12
+ assertSafeName(canon_name);
13
+ const dir = canonDir(projectPath);
14
+ const dialogPath = resolve(dir, canon_name, 'dialog.md');
15
+ const dialog = readFileSafe(dialogPath);
16
+ if (!dialog) {
17
+ return error(`Canon dialog not found: ${dialogPath}`);
18
+ }
19
+ const stamp = extractConvergenceStamp(dialog);
20
+ if (!stamp) {
21
+ return error('No convergence stamp found. The canon must be CONVERGED before decomposition.');
22
+ }
23
+ if (stamp.type === 'draft') {
24
+ return error('Canon is still a DRAFT. Use pantion_resume to finish converging first, then decompose.');
25
+ }
26
+ // Extract inference policy from stamp
27
+ const inferencePolicy = stamp.inferencePolicy;
28
+ // Assemble decompose system prompt
29
+ const convergenceInstructions = assembleSystemPrompt({
30
+ mode: 'decompose',
31
+ existingDialog: dialog,
32
+ canonName: canon_name,
33
+ protocolDir: context.protocolDir,
34
+ inferencePolicy: inferencePolicy === 'strict' ? 'strict' : undefined,
35
+ });
36
+ // Create a new session for the decomposition work
37
+ const session = createSession(projectPath, `decompose-${canon_name}`, convergenceInstructions);
38
+ session.canonName = canon_name;
39
+ saveSession(projectPath, session);
40
+ // Extract the raw STATUS value from the stamp for display
41
+ const statusMatch = stamp.raw.match(/STATUS:\s*(.+)/);
42
+ const displayStatus = statusMatch ? statusMatch[1].trim() : stamp.type;
43
+ return success({
44
+ dialog,
45
+ current_status: displayStatus,
46
+ session_id: session.id,
47
+ convergence_instructions: convergenceInstructions,
48
+ message: `Canon "${canon_name}" loaded for decomposition. Status: ${displayStatus}. Follow the decomposition protocol to split into architect, interface, and component canons.`,
49
+ });
50
+ }
51
+ catch (err) {
52
+ return error(err instanceof Error ? err.message : String(err));
53
+ }
54
+ });
55
+ }
56
+ //# sourceMappingURL=decompose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../src/tools/decompose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerTools(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA4ClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAM7E"}
@@ -0,0 +1,49 @@
1
+ import { isToolEnabled } from '../feature-set.js';
2
+ import { registerStart } from './start.js';
3
+ import { registerCheckConvergence } from './check-convergence.js';
4
+ import { registerSaveCanon } from './save-canon.js';
5
+ import { registerTranslate } from './translate.js';
6
+ import { registerCheck } from './check.js';
7
+ import { registerAmend } from './amend.js';
8
+ import { registerResume } from './resume.js';
9
+ import { registerListCanons } from './list-canons.js';
10
+ import { registerReconverge } from './reconverge.js';
11
+ import { registerCreateDialog } from './create-dialog.js';
12
+ import { registerRedialog } from './redialog.js';
13
+ import { registerDecompose } from './decompose.js';
14
+ import { registerReverse } from './reverse.js';
15
+ import { registerOnboard } from './onboard.js';
16
+ import { registerUpdate } from './update.js';
17
+ import { registerMigrate } from './migrate.js';
18
+ import { registerApprove } from './approve.js';
19
+ import { registerReject } from './reject.js';
20
+ import { registerReflect } from './reflect.js';
21
+ const TOOL_REGISTRY = [
22
+ ['pantion_start', registerStart],
23
+ ['pantion_check-convergence', registerCheckConvergence],
24
+ ['pantion_save-canon', registerSaveCanon],
25
+ ['pantion_translate', registerTranslate],
26
+ ['pantion_check', registerCheck],
27
+ ['pantion_amend', registerAmend],
28
+ ['pantion_resume', registerResume],
29
+ ['pantion_redialog', registerReconverge],
30
+ ['pantion_list-canons', registerListCanons],
31
+ ['pantion_create-dialog', registerCreateDialog],
32
+ ['pantion_redialog', registerRedialog],
33
+ ['pantion_decompose', registerDecompose],
34
+ ['pantion_reverse', registerReverse],
35
+ ['pantion_onboard', registerOnboard],
36
+ ['pantion_update', registerUpdate],
37
+ ['pantion_migrate', registerMigrate],
38
+ ['pantion_approve', registerApprove],
39
+ ['pantion_reject', registerReject],
40
+ ['pantion_reflect', registerReflect],
41
+ ];
42
+ export function registerTools(server, context) {
43
+ for (const [name, register] of TOOL_REGISTRY) {
44
+ if (isToolEnabled(name)) {
45
+ register(server, context);
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,aAAa,GAAyE;IAC1F,CAAC,eAAe,EAAE,aAAa,CAAC;IAChC,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;IACvD,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;IACzC,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;IACxC,CAAC,eAAe,EAAE,aAAa,CAAC;IAChC,CAAC,eAAe,EAAE,aAAa,CAAC;IAChC,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAClC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACxC,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;IAC3C,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;IAC/C,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IACtC,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;IACxC,CAAC,iBAAiB,EAAE,eAAe,CAAC;IACpC,CAAC,iBAAiB,EAAE,eAAe,CAAC;IACpC,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAClC,CAAC,iBAAiB,EAAE,eAAe,CAAC;IACpC,CAAC,iBAAiB,EAAE,eAAe,CAAC;IACpC,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAClC,CAAC,iBAAiB,EAAE,eAAe,CAAC;CACrC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAsB;IACrE,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC;QAC7C,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerListCanons(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=list-canons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-canons.d.ts","sourceRoot":"","sources":["../../src/tools/list-canons.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA4BlF"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { readCanonIndex } from '../core/index.js';
3
+ import { success, error } from '../utils/response.js';
4
+ export function registerListCanons(server, context) {
5
+ server.tool('pantion_list-canons', 'List all canons in a project. Scans the canon/ directory and returns metadata for each canon.', {
6
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
7
+ }, async ({ project_path }) => {
8
+ try {
9
+ const projectPath = project_path ?? context.projectPath;
10
+ const canons = readCanonIndex(projectPath);
11
+ return success({
12
+ canons: canons.map((c) => ({
13
+ name: c.name,
14
+ type: c.type,
15
+ status: c.status,
16
+ date: c.date,
17
+ has_summary: c.hasSummary,
18
+ open_questions: c.openQuestions,
19
+ human_stamp_status: c.humanStampStatus ?? 'PENDING',
20
+ })),
21
+ });
22
+ }
23
+ catch (err) {
24
+ return error(err instanceof Error ? err.message : String(err));
25
+ }
26
+ });
27
+ }
28
+ //# sourceMappingURL=list-canons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-canons.js","sourceRoot":"","sources":["../../src/tools/list-canons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,OAAsB;IAC1E,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,+FAA+F,EAC/F;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KACpG,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACL,MAAM,WAAW,GAAG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;YACxD,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAE3C,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,UAAU;oBACzB,cAAc,EAAE,CAAC,CAAC,aAAa;oBAC/B,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,IAAI,SAAS;iBACpD,CAAC,CAAC;aACJ,CAAC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerMigrate(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/tools/migrate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAWlD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA0C/E"}
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { assembleSystemPrompt, readCanonIndex, createSession, saveSession, } from '../core/index.js';
3
+ import { success, error } from '../utils/response.js';
4
+ export function registerMigrate(server, context) {
5
+ server.tool('pantion_migrate', 'Migrate an existing project to the current protocol version. Detects version mismatches, evaluates canons for compatibility, and provides migration instructions.', {
6
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
7
+ }, async ({ project_path }) => {
8
+ try {
9
+ const projectPath = project_path ?? context.projectPath;
10
+ const canons = readCanonIndex(projectPath);
11
+ if (canons.length === 0) {
12
+ return error('No canons found in this project. Nothing to migrate.');
13
+ }
14
+ const convergenceInstructions = assembleSystemPrompt({
15
+ mode: 'migrate',
16
+ protocolDir: context.protocolDir,
17
+ });
18
+ const session = createSession(projectPath, `migrate-${Date.now()}`, convergenceInstructions);
19
+ saveSession(projectPath, session);
20
+ return success({
21
+ session_id: session.id,
22
+ canons: canons.map((c) => ({
23
+ name: c.name,
24
+ type: c.type,
25
+ status: c.status,
26
+ date: c.date,
27
+ open_questions: c.openQuestions,
28
+ })),
29
+ convergence_instructions: convergenceInstructions,
30
+ message: `Migration session started. Found ${canons.length} canon(s). Follow the migrate protocol: detect version mismatches, evaluate canons, perform 3-level migration.`,
31
+ });
32
+ }
33
+ catch (err) {
34
+ return error(err instanceof Error ? err.message : String(err));
35
+ }
36
+ });
37
+ }
38
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/tools/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EACL,oBAAoB,EAEpB,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,OAAsB;IACvE,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,mKAAmK,EACnK;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KACpG,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACL,MAAM,WAAW,GAAG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;YAExD,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAE3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC7F,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAElC,OAAO,OAAO,CAAC;gBACb,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,cAAc,EAAE,CAAC,CAAC,aAAa;iBAChC,CAAC,CAAC;gBACH,wBAAwB,EAAE,uBAAuB;gBACjD,OAAO,EAAE,oCAAoC,MAAM,CAAC,MAAM,gHAAgH;aAC3K,CAAC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerOnboard(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/tools/onboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQlD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA6B/E"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import { assembleSystemPrompt, createSession, saveSession, } from '../core/index.js';
3
+ import { success, error } from '../utils/response.js';
4
+ export function registerOnboard(server, context) {
5
+ server.tool('pantion_onboard', 'Add Pantion to an existing project. Guides the user through three strategies: forward-only, full reverse, or partial canonization.', {
6
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
7
+ }, async ({ project_path }) => {
8
+ try {
9
+ const projectPath = project_path ?? context.projectPath;
10
+ const convergenceInstructions = assembleSystemPrompt({
11
+ mode: 'onboard',
12
+ protocolDir: context.protocolDir,
13
+ });
14
+ const session = createSession(projectPath, `onboard-${Date.now()}`, convergenceInstructions);
15
+ saveSession(projectPath, session);
16
+ return success({
17
+ session_id: session.id,
18
+ convergence_instructions: convergenceInstructions,
19
+ message: `Onboarding session started. Follow the onboard protocol: explore the project, present the three strategies (forward-only, full reverse, partial), and execute the chosen strategy.`,
20
+ });
21
+ }
22
+ catch (err) {
23
+ return error(err instanceof Error ? err.message : String(err));
24
+ }
25
+ });
26
+ }
27
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/tools/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,OAAsB;IACvE,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,oIAAoI,EACpI;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KACpG,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACL,MAAM,WAAW,GAAG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;YAExD,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC7F,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAElC,OAAO,OAAO,CAAC;gBACb,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,wBAAwB,EAAE,uBAAuB;gBACjD,OAAO,EAAE,oLAAoL;aAC9L,CAAC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerReconverge(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=reconverge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconverge.d.ts","sourceRoot":"","sources":["../../src/tools/reconverge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAiBlD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA2ElF"}
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import { resolve } from 'node:path';
3
+ import { readFileSafe, canonDir, extractConvergenceStamp, extractHumanStamp, formatHumanStamp, replaceHumanStamp, writeFile, assembleSystemPrompt, createSession, saveSession, assertSafeName, } from '../core/index.js';
4
+ import { success, error } from '../utils/response.js';
5
+ export function registerReconverge(server, context) {
6
+ server.tool('pantion_redialog', 'Re-evaluate an existing converged canon with a better model. Reads the dialog, provides gap analysis instructions, and creates a session for supplementary convergence.', {
7
+ canon_name: z.string().describe('Name of the canon to redialog'),
8
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
9
+ }, async ({ canon_name, project_path }) => {
10
+ try {
11
+ const projectPath = project_path ?? context.projectPath;
12
+ assertSafeName(canon_name);
13
+ const dir = canonDir(projectPath);
14
+ const dialogPath = resolve(dir, canon_name, 'dialog.md');
15
+ const dialog = readFileSafe(dialogPath);
16
+ if (!dialog) {
17
+ return error(`Canon dialog not found: ${dialogPath}`);
18
+ }
19
+ const stamp = extractConvergenceStamp(dialog);
20
+ if (!stamp) {
21
+ return error('No convergence stamp found. This canon may be a DRAFT — use pantion_resume instead.');
22
+ }
23
+ if (stamp.type === 'draft') {
24
+ return error('Canon is still a DRAFT. Use pantion_resume to finish converging first, then reconverge.');
25
+ }
26
+ // Extract the raw STATUS value from the stamp for display
27
+ const statusMatch = stamp.raw.match(/STATUS:\s*(.+)/);
28
+ const displayStatus = statusMatch ? statusMatch[1].trim() : stamp.type;
29
+ // Extract inference policy from stamp
30
+ const inferencePolicy = stamp.inferencePolicy;
31
+ // Assemble reconverge system prompt
32
+ const convergenceInstructions = assembleSystemPrompt({
33
+ mode: 'reconverge',
34
+ existingDialog: dialog,
35
+ canonName: canon_name,
36
+ protocolDir: context.protocolDir,
37
+ inferencePolicy: inferencePolicy === 'strict' ? 'strict' : undefined,
38
+ });
39
+ // Reset HUMAN STAMP to PENDING (reconvergence invalidates previous approval)
40
+ let humanStampReset = false;
41
+ const humanStamp = extractHumanStamp(dialog);
42
+ if (humanStamp && humanStamp.status !== 'PENDING') {
43
+ const pendingStamp = formatHumanStamp({ status: 'PENDING' });
44
+ const resetContent = replaceHumanStamp(dialog, pendingStamp);
45
+ if (resetContent) {
46
+ writeFile(dialogPath, resetContent);
47
+ humanStampReset = true;
48
+ }
49
+ }
50
+ // Create a new session for the reconvergence work
51
+ const session = createSession(projectPath, `reconverge-${canon_name}`, convergenceInstructions);
52
+ session.canonName = canon_name;
53
+ saveSession(projectPath, session);
54
+ return success({
55
+ dialog,
56
+ current_status: displayStatus,
57
+ session_id: session.id,
58
+ human_stamp_reset: humanStampReset || undefined,
59
+ convergence_instructions: convergenceInstructions,
60
+ message: `Canon "${canon_name}" loaded for reconvergence. Status: ${displayStatus}. Analyze the dialog for gaps before conducting supplementary convergence.`,
61
+ });
62
+ }
63
+ catch (err) {
64
+ return error(err instanceof Error ? err.message : String(err));
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=reconverge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconverge.js","sourceRoot":"","sources":["../../src/tools/reconverge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerRedialog(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=redialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redialog.d.ts","sourceRoot":"","sources":["../../src/tools/redialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAalD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAuEhF"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { readDialogCanon, dialogHasCanon, extractConvergenceStamp, assembleSystemPrompt, createSession, saveSession, getDialog, assertSafeName, } from '../core/index.js';
3
+ import { success, error } from '../utils/response.js';
4
+ export function registerRedialog(server, context) {
5
+ server.tool('pantion_redialog', 'Re-evaluate an existing dynamic dialog canon with a better model. Reads the dialog-canon, provides gap analysis instructions, and creates a session for supplementary convergence.', {
6
+ dialog_name: z.string().describe('Name of the dialog to redialog'),
7
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
8
+ }, async ({ dialog_name, project_path }) => {
9
+ try {
10
+ assertSafeName(dialog_name);
11
+ const projectPath = project_path ?? context.projectPath;
12
+ // Verify dialog exists and has a canon
13
+ if (!dialogHasCanon(projectPath, dialog_name)) {
14
+ const dlg = getDialog(dialog_name, projectPath, context.dialogsDir);
15
+ if (dlg) {
16
+ return error(`Dialog "${dialog_name}" exists but has no canon (it is a hand-crafted dialog). Use pantion_create-dialog to create a dynamic version.`);
17
+ }
18
+ return error(`Dialog "${dialog_name}" not found or has no canon.`);
19
+ }
20
+ const dialog = readDialogCanon(projectPath, dialog_name);
21
+ if (!dialog) {
22
+ return error(`Could not read dialog canon dialog for "${dialog_name}".`);
23
+ }
24
+ const stamp = extractConvergenceStamp(dialog);
25
+ if (!stamp) {
26
+ return error('No convergence stamp found in dialog canon. This dialog may be a DRAFT — use pantion_resume instead.');
27
+ }
28
+ if (stamp.type === 'draft') {
29
+ return error('Dialog canon is still a DRAFT. Resume the dialog creation dialog first.');
30
+ }
31
+ const statusMatch = stamp.raw.match(/STATUS:\s*(.+)/);
32
+ const displayStatus = statusMatch ? statusMatch[1].trim() : stamp.type;
33
+ // Load dialog-builder rules for the reconverge prompt
34
+ const dialogBuilder = getDialog('dialog-builder', projectPath, context.dialogsDir);
35
+ // Assemble reconverge system prompt with dialog-builder context
36
+ const convergenceInstructions = assembleSystemPrompt({
37
+ mode: 'reconverge',
38
+ existingDialog: dialog,
39
+ canonName: `dialog:${dialog_name}`,
40
+ dialogRules: dialogBuilder?.convergenceRules,
41
+ protocolDir: context.protocolDir,
42
+ });
43
+ // Create session for the redialog work
44
+ const session = createSession(projectPath, `redialog-${dialog_name}`, convergenceInstructions);
45
+ session.canonType = 'dialog';
46
+ session.targetDialogName = dialog_name;
47
+ session.dialog = 'dialog-builder';
48
+ saveSession(projectPath, session);
49
+ return success({
50
+ dialog,
51
+ current_status: displayStatus,
52
+ dialog_name,
53
+ session_id: session.id,
54
+ convergence_instructions: convergenceInstructions,
55
+ message: `Dialog canon "${dialog_name}" loaded for reconvergence. Status: ${displayStatus}. Analyze the dialog dialog for gaps in domain knowledge before conducting supplementary convergence.`,
56
+ });
57
+ }
58
+ catch (err) {
59
+ return error(err instanceof Error ? err.message : String(err));
60
+ }
61
+ });
62
+ }
63
+ //# sourceMappingURL=redialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redialog.js","sourceRoot":"","sources":["../../src/tools/redialog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ServerContext } from '../server.js';
3
+ export declare function registerReflect(server: McpServer, context: ServerContext): void;
4
+ //# sourceMappingURL=reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../src/tools/reflect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAmElD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA+C/E"}