@pantion/dialogs 0.2.1 → 0.3.0

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 (126) hide show
  1. package/dialogs/router/convergence-rules.md +160 -0
  2. package/dialogs/router/dialog.json +12 -0
  3. package/dialogs/router/translate.md +21 -0
  4. package/dialogs/software/convergence-rules.md +202 -15
  5. package/dialogs/software/prompts/convergence-intro.md +27 -15
  6. package/dist/core/feedback/aggregator.d.ts +7 -0
  7. package/dist/core/feedback/aggregator.d.ts.map +1 -0
  8. package/dist/core/feedback/aggregator.js +119 -0
  9. package/dist/core/feedback/aggregator.js.map +1 -0
  10. package/dist/core/feedback/store.d.ts +20 -0
  11. package/dist/core/feedback/store.d.ts.map +1 -0
  12. package/dist/core/feedback/store.js +111 -0
  13. package/dist/core/feedback/store.js.map +1 -0
  14. package/dist/core/feedback/suggestions.d.ts +5 -0
  15. package/dist/core/feedback/suggestions.d.ts.map +1 -0
  16. package/dist/core/feedback/suggestions.js +60 -0
  17. package/dist/core/feedback/suggestions.js.map +1 -0
  18. package/dist/core/feedback/types.d.ts +26 -0
  19. package/dist/core/feedback/types.d.ts.map +1 -0
  20. package/dist/core/feedback/types.js +2 -0
  21. package/dist/core/feedback/types.js.map +1 -0
  22. package/dist/core/index.d.ts +16 -3
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +10 -2
  25. package/dist/core/index.js.map +1 -1
  26. package/dist/core/protocol/loader.d.ts +4 -0
  27. package/dist/core/protocol/loader.d.ts.map +1 -1
  28. package/dist/core/protocol/loader.js +16 -0
  29. package/dist/core/protocol/loader.js.map +1 -1
  30. package/dist/core/protocol/stamp-parser.d.ts.map +1 -1
  31. package/dist/core/protocol/stamp-parser.js +2 -1
  32. package/dist/core/protocol/stamp-parser.js.map +1 -1
  33. package/dist/core/protocol/system-prompt.d.ts +17 -0
  34. package/dist/core/protocol/system-prompt.d.ts.map +1 -1
  35. package/dist/core/protocol/system-prompt.js +63 -5
  36. package/dist/core/protocol/system-prompt.js.map +1 -1
  37. package/dist/core/router/classifier.d.ts +29 -0
  38. package/dist/core/router/classifier.d.ts.map +1 -0
  39. package/dist/core/router/classifier.js +160 -0
  40. package/dist/core/router/classifier.js.map +1 -0
  41. package/dist/core/router/context.d.ts +28 -0
  42. package/dist/core/router/context.d.ts.map +1 -0
  43. package/dist/core/router/context.js +65 -0
  44. package/dist/core/router/context.js.map +1 -0
  45. package/dist/core/router/menu.d.ts +18 -0
  46. package/dist/core/router/menu.d.ts.map +1 -0
  47. package/dist/core/router/menu.js +109 -0
  48. package/dist/core/router/menu.js.map +1 -0
  49. package/dist/core/router/next-actions.d.ts +17 -0
  50. package/dist/core/router/next-actions.d.ts.map +1 -0
  51. package/dist/core/router/next-actions.js +153 -0
  52. package/dist/core/router/next-actions.js.map +1 -0
  53. package/dist/core/router/types.d.ts +49 -0
  54. package/dist/core/router/types.d.ts.map +1 -0
  55. package/dist/core/router/types.js +8 -0
  56. package/dist/core/router/types.js.map +1 -0
  57. package/dist/core/types.d.ts +2 -0
  58. package/dist/core/types.d.ts.map +1 -1
  59. package/dist/core/utils/datetime.d.ts +13 -0
  60. package/dist/core/utils/datetime.d.ts.map +1 -0
  61. package/dist/core/utils/datetime.js +17 -0
  62. package/dist/core/utils/datetime.js.map +1 -0
  63. package/dist/feature-set.d.ts.map +1 -1
  64. package/dist/feature-set.js +4 -0
  65. package/dist/feature-set.js.map +1 -1
  66. package/dist/index.js +3 -3
  67. package/dist/index.js.map +1 -1
  68. package/dist/prompts/workflow-prompts.d.ts.map +1 -1
  69. package/dist/prompts/workflow-prompts.js +81 -1
  70. package/dist/prompts/workflow-prompts.js.map +1 -1
  71. package/dist/server.d.ts.map +1 -1
  72. package/dist/server.js +6 -0
  73. package/dist/server.js.map +1 -1
  74. package/dist/tools/amend.d.ts.map +1 -1
  75. package/dist/tools/amend.js +2 -2
  76. package/dist/tools/amend.js.map +1 -1
  77. package/dist/tools/approve.d.ts.map +1 -1
  78. package/dist/tools/approve.js +2 -2
  79. package/dist/tools/approve.js.map +1 -1
  80. package/dist/tools/build.d.ts +4 -0
  81. package/dist/tools/build.d.ts.map +1 -0
  82. package/dist/tools/build.js +200 -0
  83. package/dist/tools/build.js.map +1 -0
  84. package/dist/tools/check-convergence.d.ts.map +1 -1
  85. package/dist/tools/check-convergence.js +15 -1
  86. package/dist/tools/check-convergence.js.map +1 -1
  87. package/dist/tools/feedback.d.ts +4 -0
  88. package/dist/tools/feedback.d.ts.map +1 -0
  89. package/dist/tools/feedback.js +51 -0
  90. package/dist/tools/feedback.js.map +1 -0
  91. package/dist/tools/index.d.ts.map +1 -1
  92. package/dist/tools/index.js +9 -1
  93. package/dist/tools/index.js.map +1 -1
  94. package/dist/tools/learn.d.ts +4 -0
  95. package/dist/tools/learn.d.ts.map +1 -0
  96. package/dist/tools/learn.js +38 -0
  97. package/dist/tools/learn.js.map +1 -0
  98. package/dist/tools/reflect.d.ts.map +1 -1
  99. package/dist/tools/reflect.js +68 -1
  100. package/dist/tools/reflect.js.map +1 -1
  101. package/dist/tools/reject.d.ts.map +1 -1
  102. package/dist/tools/reject.js +2 -2
  103. package/dist/tools/reject.js.map +1 -1
  104. package/dist/tools/router.d.ts +10 -0
  105. package/dist/tools/router.d.ts.map +1 -0
  106. package/dist/tools/router.js +315 -0
  107. package/dist/tools/router.js.map +1 -0
  108. package/dist/tools/save-canon.d.ts.map +1 -1
  109. package/dist/tools/save-canon.js +28 -12
  110. package/dist/tools/save-canon.js.map +1 -1
  111. package/dist/tools/start.d.ts.map +1 -1
  112. package/dist/tools/start.js +20 -7
  113. package/dist/tools/start.js.map +1 -1
  114. package/dist/tools/translate.d.ts.map +1 -1
  115. package/dist/tools/translate.js +21 -4
  116. package/dist/tools/translate.js.map +1 -1
  117. package/package.json +1 -1
  118. package/protocol/commands/dialog-post.md +46 -0
  119. package/protocol/commands/dialog-stamps.md +67 -0
  120. package/protocol/commands/dialog.md +4 -98
  121. package/protocol/commands/start-post.md +53 -0
  122. package/protocol/commands/start-stamps.md +133 -0
  123. package/protocol/commands/start.md +20 -167
  124. package/protocol/core-save.md +102 -0
  125. package/protocol/core-stamps.md +97 -0
  126. package/protocol/core.md +4 -191
@@ -0,0 +1,315 @@
1
+ /**
2
+ * pantion_router — single-entry MCP tool that routes user intent
3
+ * to the correct Pantion tool.
4
+ *
5
+ * Pure decision function: read-only, stateless, no side-effects.
6
+ */
7
+ import { z } from 'zod';
8
+ import { randomUUID } from 'node:crypto';
9
+ import { isToolEnabled } from '../feature-set.js';
10
+ import { success, error } from '../utils/response.js';
11
+ import { classifyIntent, ACTION_TO_TOOL, HIGH_RISK_ACTIONS } from '../core/router/classifier.js';
12
+ import { collectContext } from '../core/router/context.js';
13
+ import { buildMenu, buildContextSummary } from '../core/router/menu.js';
14
+ import { buildNextActions, TOOL_FALLBACKS } from '../core/router/next-actions.js';
15
+ const SCHEMA_VERSION = '1.0';
16
+ const ROUTER_VERSION = '0.1.0';
17
+ const NON_AUTO_EXECUTABLE_ACTIONS = new Set(['amend', 'translate', 'reflect', 'feedback']);
18
+ export function registerRouter(server, context) {
19
+ server.tool('pantion_router', 'Route a user\'s intent to the right Pantion tool. Returns routing instructions, a context menu, or a clarifying question. Pure read-only — no side-effects.', {
20
+ user_intent: z.string().optional().describe('What the user wants to do (free text, may be empty)'),
21
+ project_path: z.string().optional().describe('Project directory (defaults to server project path)'),
22
+ }, async ({ user_intent, project_path }) => {
23
+ try {
24
+ const projectPath = project_path ?? context.projectPath;
25
+ const requestId = randomUUID();
26
+ const timestamp = new Date().toISOString();
27
+ const intent = user_intent?.trim() ?? '';
28
+ // Phase 1: classify intent (if provided)
29
+ const classification = intent ? classifyIntent(intent) : null;
30
+ // Phase 2: collect context (layered)
31
+ let routerContext;
32
+ try {
33
+ routerContext = collectContext(projectPath, context.dialogsDir, classification?.action ?? null, classification?.confidence);
34
+ }
35
+ catch {
36
+ // Degraded: context collection failed entirely
37
+ return success(buildDegradedMenuResponse(requestId, timestamp, undefined, ['Context collection failed'], 'degraded_no_context'));
38
+ }
39
+ const contextSummary = buildContextSummary(routerContext);
40
+ // Phase 3: route based on intent
41
+ if (!intent) {
42
+ // Empty input → menu
43
+ const sections = buildMenu(routerContext);
44
+ const response = {
45
+ response_type: 'menu',
46
+ schema_version: SCHEMA_VERSION,
47
+ router_version: ROUTER_VERSION,
48
+ request_id: requestId,
49
+ timestamp_utc: timestamp,
50
+ menu: { sections },
51
+ confidence: 1.0,
52
+ confidence_reason: 'No intent provided — showing context menu',
53
+ decision_path: 'rules_only',
54
+ context_summary: contextSummary,
55
+ warnings: routerContext.warnings,
56
+ degraded: false,
57
+ };
58
+ return success(response);
59
+ }
60
+ if (!classification) {
61
+ // No keyword match — clarify (client can follow up with empty intent for menu)
62
+ const response = {
63
+ response_type: 'clarify',
64
+ schema_version: SCHEMA_VERSION,
65
+ router_version: ROUTER_VERSION,
66
+ request_id: requestId,
67
+ timestamp_utc: timestamp,
68
+ question: 'I\'m not sure what you\'d like to do. Can you clarify?',
69
+ options: buildClarifyOptions(routerContext),
70
+ confidence: 0.2,
71
+ confidence_reason: 'No keyword match found',
72
+ decision_path: 'llm_fallback',
73
+ context_summary: contextSummary,
74
+ warnings: routerContext.warnings,
75
+ degraded: false,
76
+ };
77
+ return success(response);
78
+ }
79
+ // Re-classify with context for better confidence
80
+ const enrichedClassification = classifyIntent(intent, {
81
+ canons: routerContext.canons,
82
+ sessions: routerContext.sessions,
83
+ hasPatterns: !!routerContext.patterns,
84
+ });
85
+ const { action, confidence, confidence_reason, decision_path } = enrichedClassification ?? classification;
86
+ // Confidence band routing
87
+ if (confidence < 0.45) {
88
+ // Clarify
89
+ const response = {
90
+ response_type: 'clarify',
91
+ schema_version: SCHEMA_VERSION,
92
+ router_version: ROUTER_VERSION,
93
+ request_id: requestId,
94
+ timestamp_utc: timestamp,
95
+ question: `Did you mean to ${action}?`,
96
+ options: buildClarifyOptions(routerContext),
97
+ confidence,
98
+ confidence_reason,
99
+ decision_path,
100
+ context_summary: contextSummary,
101
+ warnings: routerContext.warnings,
102
+ degraded: false,
103
+ };
104
+ return success(response);
105
+ }
106
+ if (confidence >= 0.45 && confidence < 0.75) {
107
+ // LLM fallback zone — return clarify with hint
108
+ const response = {
109
+ response_type: 'clarify',
110
+ schema_version: SCHEMA_VERSION,
111
+ router_version: ROUTER_VERSION,
112
+ request_id: requestId,
113
+ timestamp_utc: timestamp,
114
+ question: `I think you want to ${action}. Is that right?`,
115
+ options: [
116
+ { label: `Yes, ${action}`, action, args: buildArgs(action, routerContext) },
117
+ ...buildClarifyOptions(routerContext).filter(o => o.action !== action).slice(0, 2),
118
+ ],
119
+ confidence,
120
+ confidence_reason: confidence_reason + ' — in LLM fallback zone',
121
+ decision_path: 'llm_fallback',
122
+ context_summary: contextSummary,
123
+ warnings: routerContext.warnings,
124
+ degraded: false,
125
+ };
126
+ return success(response);
127
+ }
128
+ // confidence >= 0.75 → route
129
+ const toolName = ACTION_TO_TOOL[action];
130
+ // Tool availability check
131
+ let finalAction = action;
132
+ let finalTool = toolName;
133
+ const warnings = [...routerContext.warnings];
134
+ if (!isToolEnabled(toolName)) {
135
+ const fallbackAction = TOOL_FALLBACKS[action];
136
+ if (fallbackAction) {
137
+ const fallbackTool = ACTION_TO_TOOL[fallbackAction];
138
+ if (isToolEnabled(fallbackTool)) {
139
+ warnings.push(`${toolName} is not available, falling back to ${fallbackTool}`);
140
+ finalAction = fallbackAction;
141
+ finalTool = fallbackTool;
142
+ }
143
+ else {
144
+ warnings.push(`${toolName} and fallback ${fallbackTool} are both unavailable`);
145
+ return success(buildDegradedMenuResponse(requestId, timestamp, routerContext, warnings, 'degraded_tool_unavailable'));
146
+ }
147
+ }
148
+ else {
149
+ warnings.push(`${toolName} is not available and no fallback defined`);
150
+ return success(buildDegradedMenuResponse(requestId, timestamp, routerContext, warnings, 'degraded_tool_unavailable'));
151
+ }
152
+ }
153
+ const routeArgs = buildArgs(finalAction, routerContext);
154
+ const routeExecutable = isRouteExecutable(finalAction, routeArgs);
155
+ if (!routeExecutable) {
156
+ const response = {
157
+ response_type: 'clarify',
158
+ schema_version: SCHEMA_VERSION,
159
+ router_version: ROUTER_VERSION,
160
+ request_id: requestId,
161
+ timestamp_utc: timestamp,
162
+ question: clarificationQuestionFor(finalAction),
163
+ options: buildClarifyOptions(routerContext),
164
+ confidence,
165
+ confidence_reason: `${confidence_reason} — additional required details are missing`,
166
+ decision_path: 'clarified',
167
+ context_summary: contextSummary,
168
+ warnings: [
169
+ ...warnings,
170
+ `${finalAction} requires additional structured input before execution`,
171
+ ],
172
+ degraded: false,
173
+ };
174
+ return success(response);
175
+ }
176
+ const needsConfirmation = HIGH_RISK_ACTIONS.has(finalAction);
177
+ const nextActions = buildNextActions(finalAction, routerContext);
178
+ const response = {
179
+ response_type: 'route',
180
+ schema_version: SCHEMA_VERSION,
181
+ router_version: ROUTER_VERSION,
182
+ request_id: requestId,
183
+ timestamp_utc: timestamp,
184
+ tool_to_call: finalTool,
185
+ args: routeArgs,
186
+ why: `Matched intent "${intent}" to ${finalAction}`,
187
+ needs_confirmation: needsConfirmation,
188
+ confidence,
189
+ confidence_reason,
190
+ decision_path,
191
+ context_summary: contextSummary,
192
+ warnings,
193
+ degraded: false,
194
+ next_actions: nextActions.length > 0 ? nextActions : undefined,
195
+ };
196
+ return success(response);
197
+ }
198
+ catch (err) {
199
+ return error(err instanceof Error ? err.message : String(err));
200
+ }
201
+ });
202
+ }
203
+ function buildArgs(action, context) {
204
+ switch (action) {
205
+ case 'resume': {
206
+ const draft = context.canons.find(c => c.status.toLowerCase().includes('draft'));
207
+ return draft ? { canon_name: draft.name } : {};
208
+ }
209
+ case 'check':
210
+ case 'approve':
211
+ case 'translate':
212
+ case 'reflect':
213
+ case 'feedback': {
214
+ // Suggest first relevant canon
215
+ const canon = context.canons[0];
216
+ return canon ? { canon_name: canon.name } : {};
217
+ }
218
+ case 'start': {
219
+ const dialog = context.dialogs[0];
220
+ return dialog ? { dialog: dialog.name } : {};
221
+ }
222
+ default:
223
+ return {};
224
+ }
225
+ }
226
+ function isRouteExecutable(action, args) {
227
+ if (NON_AUTO_EXECUTABLE_ACTIONS.has(action))
228
+ return false;
229
+ switch (action) {
230
+ case 'resume':
231
+ case 'check':
232
+ case 'approve':
233
+ return typeof args.canon_name === 'string' && args.canon_name.length > 0;
234
+ case 'start':
235
+ case 'learn':
236
+ case 'list':
237
+ return true;
238
+ default:
239
+ return true;
240
+ }
241
+ }
242
+ function clarificationQuestionFor(action) {
243
+ switch (action) {
244
+ case 'amend':
245
+ return 'Which canon should be amended, and what exact change (amendment dialog + stamp) do you want to apply?';
246
+ case 'translate':
247
+ return 'Which canon should be translated, and which spec files should be generated?';
248
+ case 'reflect':
249
+ return 'Which canon should be reflected on, and can you provide the reflection dialog and REALITY STAMP?';
250
+ case 'feedback':
251
+ return 'Which canon is this about, and what are type, domain, severity, description, and suggestion?';
252
+ default:
253
+ return 'Can you clarify what action and details you want?';
254
+ }
255
+ }
256
+ function buildClarifyOptions(context) {
257
+ const options = [];
258
+ const hasDrafts = context.canons.some(c => c.status.toLowerCase().includes('draft'));
259
+ if (hasDrafts) {
260
+ const draft = context.canons.find(c => c.status.toLowerCase().includes('draft'));
261
+ options.push({ label: 'Resume a draft', action: 'resume', args: draft ? { canon_name: draft.name } : undefined });
262
+ }
263
+ if (context.dialogs.length > 0) {
264
+ options.push({ label: 'Start something new', action: 'start', args: { dialog: context.dialogs[0].name } });
265
+ }
266
+ if (context.canons.length > 0) {
267
+ options.push({ label: 'Check canon quality', action: 'check', args: { canon_name: context.canons[0].name } });
268
+ }
269
+ options.push({ label: 'Show overview', action: 'list' });
270
+ return options.slice(0, 4);
271
+ }
272
+ /**
273
+ * Uniform degraded response format (Amendment 6):
274
+ * - degraded: true
275
+ * - warnings[]: at least one entry describing what failed
276
+ * - decision_path: degraded_no_context | degraded_unclassified | degraded_tool_unavailable | degraded_error
277
+ * - response_type: "menu" with at least one executable action
278
+ * - confidence: 0
279
+ */
280
+ function buildDegradedMenuResponse(requestId, timestamp, context, extraWarnings, degradedPath) {
281
+ const sections = context ? buildMenu(context) : [];
282
+ const warnings = [...(context?.warnings ?? []), ...(extraWarnings ?? [])];
283
+ // Guarantee at least one warning entry
284
+ if (warnings.length === 0) {
285
+ warnings.push('Response is degraded');
286
+ }
287
+ if (sections.length === 0) {
288
+ // Minimal fallback: at least offer start and list
289
+ sections.push({
290
+ id: 'create',
291
+ title: 'New',
292
+ items: [{ label: 'Start a new dialog', action: 'start', priority: 1 }],
293
+ });
294
+ sections.push({
295
+ id: 'manage',
296
+ title: 'Manage',
297
+ items: [{ label: 'List canons', action: 'list', priority: 2 }],
298
+ });
299
+ }
300
+ return {
301
+ response_type: 'menu',
302
+ schema_version: SCHEMA_VERSION,
303
+ router_version: ROUTER_VERSION,
304
+ request_id: requestId,
305
+ timestamp_utc: timestamp,
306
+ menu: { sections },
307
+ confidence: 0,
308
+ confidence_reason: 'Degraded response — context collection failed or tool unavailable',
309
+ decision_path: degradedPath ?? 'degraded_error',
310
+ context_summary: context ? buildContextSummary(context) : 'Unable to determine project state',
311
+ warnings,
312
+ degraded: true,
313
+ };
314
+ }
315
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAElF,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,2BAA2B,GAA8B,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEtH,MAAM,UAAU,cAAc,CAAC,MAAiB,EAAE,OAAsB;IACtE,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,6JAA6J,EAC7J;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAClG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KACpG,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;YACxD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAG,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAEzC,yCAAyC;YACzC,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE9D,qCAAqC;YACrC,IAAI,aAAa,CAAC;YAClB,IAAI,CAAC;gBACH,aAAa,GAAG,cAAc,CAC5B,WAAW,EACX,OAAO,CAAC,UAAU,EAClB,cAAc,EAAE,MAAM,IAAI,IAAI,EAC9B,cAAc,EAAE,UAAU,CAC3B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;gBAC/C,OAAO,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,2BAA2B,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;YACnI,CAAC;YAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAE1D,iCAAiC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,qBAAqB;gBACrB,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAmB;oBAC/B,aAAa,EAAE,MAAM;oBACrB,cAAc,EAAE,cAAc;oBAC9B,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,SAAS;oBACxB,IAAI,EAAE,EAAE,QAAQ,EAAE;oBAClB,UAAU,EAAE,GAAG;oBACf,iBAAiB,EAAE,2CAA2C;oBAC9D,aAAa,EAAE,YAAY;oBAC3B,eAAe,EAAE,cAAc;oBAC/B,QAAQ,EAAE,aAAa,CAAC,QAAQ;oBAChC,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBACF,OAAO,OAAO,CAAC,QAA8C,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,+EAA+E;gBAC/E,MAAM,QAAQ,GAAmB;oBAC/B,aAAa,EAAE,SAAS;oBACxB,cAAc,EAAE,cAAc;oBAC9B,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,SAAS;oBACxB,QAAQ,EAAE,wDAAwD;oBAClE,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC;oBAC3C,UAAU,EAAE,GAAG;oBACf,iBAAiB,EAAE,wBAAwB;oBAC3C,aAAa,EAAE,cAAc;oBAC7B,eAAe,EAAE,cAAc;oBAC/B,QAAQ,EAAE,aAAa,CAAC,QAAQ;oBAChC,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBACF,OAAO,OAAO,CAAC,QAA8C,CAAC,CAAC;YACjE,CAAC;YAED,iDAAiD;YACjD,MAAM,sBAAsB,GAAG,cAAc,CAAC,MAAM,EAAE;gBACpD,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ;aACtC,CAAC,CAAC;YAEH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,sBAAsB,IAAI,cAAc,CAAC;YAE1G,0BAA0B;YAC1B,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBACtB,UAAU;gBACV,MAAM,QAAQ,GAAmB;oBAC/B,aAAa,EAAE,SAAS;oBACxB,cAAc,EAAE,cAAc;oBAC9B,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,SAAS;oBACxB,QAAQ,EAAE,mBAAmB,MAAM,GAAG;oBACtC,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC;oBAC3C,UAAU;oBACV,iBAAiB;oBACjB,aAAa;oBACb,eAAe,EAAE,cAAc;oBAC/B,QAAQ,EAAE,aAAa,CAAC,QAAQ;oBAChC,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBACF,OAAO,OAAO,CAAC,QAA8C,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBAC5C,+CAA+C;gBAC/C,MAAM,QAAQ,GAAmB;oBAC/B,aAAa,EAAE,SAAS;oBACxB,cAAc,EAAE,cAAc;oBAC9B,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,SAAS;oBACxB,QAAQ,EAAE,uBAAuB,MAAM,kBAAkB;oBACzD,OAAO,EAAE;wBACP,EAAE,KAAK,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;wBAC3E,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;qBACnF;oBACD,UAAU;oBACV,iBAAiB,EAAE,iBAAiB,GAAG,yBAAyB;oBAChE,aAAa,EAAE,cAAc;oBAC7B,eAAe,EAAE,cAAc;oBAC/B,QAAQ,EAAE,aAAa,CAAC,QAAQ;oBAChC,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBACF,OAAO,OAAO,CAAC,QAA8C,CAAC,CAAC;YACjE,CAAC;YAED,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAExC,0BAA0B;YAC1B,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,SAAS,GAAG,QAAQ,CAAC;YACzB,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;oBACpD,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;wBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,sCAAsC,YAAY,EAAE,CAAC,CAAC;wBAC/E,WAAW,GAAG,cAAc,CAAC;wBAC7B,SAAS,GAAG,YAAY,CAAC;oBAC3B,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,iBAAiB,YAAY,uBAAuB,CAAC,CAAC;wBAC/E,OAAO,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,2BAA2B,CAAuC,CAAC,CAAC;oBAC9J,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,2CAA2C,CAAC,CAAC;oBACtE,OAAO,OAAO,CAAC,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,2BAA2B,CAAuC,CAAC,CAAC;gBAC9J,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,eAAe,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAmB;oBAC/B,aAAa,EAAE,SAAS;oBACxB,cAAc,EAAE,cAAc;oBAC9B,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,SAAS;oBACxB,QAAQ,EAAE,wBAAwB,CAAC,WAAW,CAAC;oBAC/C,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC;oBAC3C,UAAU;oBACV,iBAAiB,EAAE,GAAG,iBAAiB,4CAA4C;oBACnF,aAAa,EAAE,WAAW;oBAC1B,eAAe,EAAE,cAAc;oBAC/B,QAAQ,EAAE;wBACR,GAAG,QAAQ;wBACX,GAAG,WAAW,wDAAwD;qBACvE;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBACF,OAAO,OAAO,CAAC,QAA8C,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAEjE,MAAM,QAAQ,GAAmB;gBAC/B,aAAa,EAAE,OAAO;gBACtB,cAAc,EAAE,cAAc;gBAC9B,cAAc,EAAE,cAAc;gBAC9B,UAAU,EAAE,SAAS;gBACrB,aAAa,EAAE,SAAS;gBACxB,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,mBAAmB,MAAM,QAAQ,WAAW,EAAE;gBACnD,kBAAkB,EAAE,iBAAiB;gBACrC,UAAU;gBACV,iBAAiB;gBACjB,aAAa;gBACb,eAAe,EAAE,cAAc;gBAC/B,QAAQ;gBACR,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC;YAEF,OAAO,OAAO,CAAC,QAA8C,CAAC,CAAC;QACjE,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;AAED,SAAS,SAAS,CAAC,MAAoB,EAAE,OAA0D;IACjG,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,+BAA+B;YAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAoB,EAAE,IAA4B;IAC3E,IAAI,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAoB;IACpD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,uGAAuG,CAAC;QACjH,KAAK,WAAW;YACd,OAAO,6EAA6E,CAAC;QACvF,KAAK,SAAS;YACZ,OAAO,kGAAkG,CAAC;QAC5G,KAAK,UAAU;YACb,OAAO,8FAA8F,CAAC;QACxG;YACE,OAAO,mDAAmD,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA0D;IACrF,MAAM,OAAO,GAAkF,EAAE,CAAC;IAElG,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACpH,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAChC,SAAiB,EACjB,SAAiB,EACjB,OAA2D,EAC3D,aAAwB,EACxB,YAA+G;IAE/G,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1E,uCAAuC;IACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,kDAAkD;QAClD,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAuB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;SACvF,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAsB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,aAAa,EAAE,MAAM;QACrB,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,cAAc;QAC9B,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,EAAE,QAAQ,EAAE;QAClB,UAAU,EAAE,CAAC;QACb,iBAAiB,EAAE,mEAAmE;QACtF,aAAa,EAAE,YAAY,IAAI,gBAAgB;QAC/C,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAC7F,QAAQ;QACR,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"save-canon.d.ts","sourceRoot":"","sources":["../../src/tools/save-canon.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAmBlD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA+FjF"}
1
+ {"version":3,"file":"save-canon.d.ts","sourceRoot":"","sources":["../../src/tools/save-canon.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsBlD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAgHjF"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { loadSession, saveSession, writeDialogFile, writeSummaryFile, updateCanonIndex, writeDialogCanonFile, writeDialogSummaryFile, extractConvergenceStamp, } from '../core/index.js';
2
+ import { loadSession, saveSession, writeDialogFile, writeSummaryFile, updateCanonIndex, writeDialogCanonFile, writeDialogSummaryFile, extractConvergenceStamp, extractProgressStamp, assembleDeferredPrompt, stampDateTime, } from '../core/index.js';
3
3
  import { success, error } from '../utils/response.js';
4
4
  const messageSchema = z.object({
5
5
  role: z.enum(['user', 'assistant']),
@@ -17,23 +17,22 @@ export function registerSaveCanon(server, context) {
17
17
  }, async ({ session_id, dialog, name, summary, dialog_name, mode, check_result }) => {
18
18
  try {
19
19
  const projectPath = context.projectPath;
20
- const date = new Date().toISOString().split('T')[0];
20
+ const date = stampDateTime();
21
21
  const messages = dialog.map((m) => ({ role: m.role, content: m.content }));
22
- // Check for convergence stamp (blocking error if missing)
22
+ // Check for convergence stamp or progress stamp
23
23
  const fullText = dialog.map((m) => m.content).join('\n');
24
24
  const stamp = extractConvergenceStamp(fullText);
25
- if (!stamp) {
26
- return error('Dialog does not contain a DIALOGSPEC STAMP. A converged stamp is required to save a canon.');
27
- }
28
- if (stamp.type === 'draft') {
29
- return error('Dialog contains a DRAFT stamp. Only converged dialogs can be saved as canon. Use pantion_resume to continue convergence.');
25
+ const progressStamp = !stamp ? extractProgressStamp(fullText) : null;
26
+ const isDraft = !!progressStamp;
27
+ if (!stamp && !progressStamp) {
28
+ return error('Dialog does not contain a DIALOGSPEC STAMP or PROGRESS STAMP. A stamp is required to save.');
30
29
  }
31
30
  // Update session
32
31
  const session = loadSession(projectPath, session_id);
33
32
  if (session) {
34
33
  session.messages = messages;
35
34
  session.canonName = name;
36
- session.status = 'converged';
35
+ session.status = isDraft ? 'draft' : 'converged';
37
36
  if (dialog_name) {
38
37
  session.canonType = 'dialog';
39
38
  session.targetDialogName = dialog_name;
@@ -78,15 +77,32 @@ export function registerSaveCanon(server, context) {
78
77
  if (summary) {
79
78
  summaryPath = writeSummaryFile(name, date, summary, projectPath);
80
79
  }
81
- updateCanonIndex(name, 'converged', date, projectPath);
80
+ updateCanonIndex(name, isDraft ? 'draft' : 'converged', date, projectPath);
81
+ }
82
+ // Load deferred save instructions (only for converged canons, not DRAFT)
83
+ let deferredInstructions;
84
+ if (!isDraft) {
85
+ try {
86
+ const commandName = session?.promptMode ?? (mode === 'dialog' ? 'dialog' : 'start');
87
+ deferredInstructions = assembleDeferredPrompt({
88
+ phase: 'save',
89
+ commandName,
90
+ protocolDir: context.protocolDir,
91
+ });
92
+ }
93
+ catch {
94
+ // Deferred loading is best-effort — save-canon must never break
95
+ }
82
96
  }
83
97
  return success({
84
98
  canon_path: canonPath,
85
99
  summary_path: summaryPath,
86
100
  index_updated: !dialog_name,
87
101
  dialog_name: dialog_name ?? undefined,
88
- stamp_type: stamp.type,
89
- stamp_model: stamp.model,
102
+ stamp_type: isDraft ? 'draft' : stamp.type,
103
+ stamp_model: isDraft ? undefined : stamp.model,
104
+ is_draft: isDraft,
105
+ ...(deferredInstructions ? { deferred_instructions: deferredInstructions } : {}),
90
106
  });
91
107
  }
92
108
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"save-canon.js","sourceRoot":"","sources":["../../src/tools/save-canon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save-canon.js","sourceRoot":"","sources":["../../src/tools/save-canon.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAYlD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAwF7E"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAalD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAmG7E"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { autoSelectDialog, listDialogs, getDialog, assembleSystemPrompt, createSession, saveSession, getSoul, } from '../core/index.js';
3
+ import { getRelevantSuggestions } from '../core/feedback/suggestions.js';
3
4
  import { success, error } from '../utils/response.js';
4
5
  export function registerStart(server, context) {
5
6
  server.tool('pantion_start', 'Start a new Pantion dialog session. Returns convergence instructions for the client LLM.', {
@@ -46,18 +47,29 @@ export function registerStart(server, context) {
46
47
  // Create a session
47
48
  const sessionName = `session-${Date.now()}`;
48
49
  const session = createSession(projectPath, sessionName, convergenceInstructions);
49
- if (selection || soulObj) {
50
- if (selection)
51
- session.dialog = selection.dialog.manifest.name;
52
- if (soulObj)
53
- session.soul = soulObj.manifest.name;
54
- saveSession(projectPath, session);
55
- }
50
+ session.promptMode = promptMode;
51
+ if (selection)
52
+ session.dialog = selection.dialog.manifest.name;
53
+ if (soulObj)
54
+ session.soul = soulObj.manifest.name;
55
+ saveSession(projectPath, session);
56
56
  const firstQuestion = selection
57
57
  ? `I've selected the **${selection.dialog.manifest.displayName}** dialog (matched: ${selection.matchedKeywords.join(', ')}). What would you like to build?`
58
58
  : availableDialogs && availableDialogs.length > 0
59
59
  ? `Welcome to Pantion. I couldn't determine the domain from your description. Available domains: ${availableDialogs.map((s) => `**${s.displayName}**`).join(', ')}. Which fits best, or shall I proceed with a general convergence?`
60
60
  : 'Welcome to Pantion. Describe in your own words what you want to build. Be as free as you like — I will ask the right questions to turn your idea into an unambiguous intent description.';
61
+ // --- Feedback suggestions (graceful — never breaks start) ---
62
+ let feedbackSuggestions;
63
+ try {
64
+ const feedbackDomain = selection?.dialog.manifest.name ?? domain ?? undefined;
65
+ const feedbackKeywords = selection?.matchedKeywords;
66
+ const suggestions = getRelevantSuggestions(projectPath, feedbackDomain, feedbackKeywords);
67
+ if (suggestions.length > 0)
68
+ feedbackSuggestions = suggestions;
69
+ }
70
+ catch {
71
+ // Feedback suggestions are best-effort — start must never break
72
+ }
61
73
  return success({
62
74
  session_id: session.id,
63
75
  mode,
@@ -73,6 +85,7 @@ export function registerStart(server, context) {
73
85
  } : null,
74
86
  convergence_instructions: convergenceInstructions,
75
87
  first_question: firstQuestion,
88
+ ...(feedbackSuggestions ? { feedback_suggestions: feedbackSuggestions } : {}),
76
89
  });
77
90
  }
78
91
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAsB;IACrE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,0FAA0F,EAC1F;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QACnG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;QACzG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC1G,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;QAClI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QAC/F,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,oGAAoG,CAAC;KAChK,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/E,IAAI,CAAC;YACL,MAAM,WAAW,GAAG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;YAExD,qEAAqE;YACrE,IAAI,SAAS,GAAG,UAAU;gBACxB,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;oBACjE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjE,CAAC,CAAC,EAAE;gBACN,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,cAAc,GAAG,MAAM,IAAI,YAAY,CAAC;gBAC9C,SAAS,GAAG,cAAc;oBACxB,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC;oBACnE,CAAC,CAAC,IAAI,CAAC;YACX,CAAC;YAED,yEAAyE;YACzE,MAAM,gBAAgB,GAAG,CAAC,SAAS;gBACjC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC;qBACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC;qBACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtH,CAAC,CAAC,SAAS,CAAC;YAEd,uCAAuC;YACvC,MAAM,OAAO,GAAG,IAAI;gBAClB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAC9C,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtD,mEAAmE;YACnE,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxD,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,gBAAgB;gBAC/C,SAAS,EAAE,OAAO,EAAE,KAAK;gBACzB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;YAEH,mBAAmB;YACnB,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;YACjF,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC/D,IAAI,OAAO;oBAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAClD,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,aAAa,GAAG,SAAS;gBAC7B,CAAC,CAAC,uBAAuB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,uBAAuB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC;gBAC3J,CAAC,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;oBAC/C,CAAC,CAAC,iGAAiG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mEAAmE;oBACpO,CAAC,CAAC,0LAA0L,CAAC;YAEjM,OAAO,OAAO,CAAC;gBACb,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,IAAI;gBACJ,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;oBAClB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;oBACpC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;oBAClD,eAAe,EAAE,SAAS,CAAC,eAAe;iBAC3C,CAAC,CAAC,CAAC,IAAI;gBACR,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBAC1E,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;oBAC3B,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW;iBAC1C,CAAC,CAAC,CAAC,IAAI;gBACR,wBAAwB,EAAE,uBAAuB;gBACjD,cAAc,EAAE,aAAa;aAC9B,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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/tools/translate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAUlD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAkFjF"}
1
+ {"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../src/tools/translate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAUlD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAmGjF"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { resolve } from 'node:path';
3
- import { writeFile, ensureDir, readFileSafe, canonDir, assertPathWithin, assertSafeName, extractHumanStamp, extractConvergenceStamp, extractCanonMetadata, generateManifest } from '../core/index.js';
3
+ import { writeFile, ensureDir, readFileSafe, canonDir, assertPathWithin, assertSafeName, extractHumanStamp, extractConvergenceStamp, extractCanonMetadata, generateManifest, assembleDeferredPrompt, stampDateTime, stampDate } from '../core/index.js';
4
4
  import { success, error } from '../utils/response.js';
5
5
  const fileSchema = z.object({
6
6
  path: z.string().describe('Relative file path within the project'),
@@ -27,7 +27,8 @@ export function registerTranslate(server, context) {
27
27
  return error(`Canon "${canon_name}" is not approved (HUMAN STAMP status: ${currentStatus}). Use pantion_approve to approve the canon before translation.`);
28
28
  }
29
29
  }
30
- const date = new Date().toISOString().split('T')[0];
30
+ const date = stampDateTime();
31
+ const dateForFilename = stampDate();
31
32
  const filesWritten = [];
32
33
  for (const file of files) {
33
34
  const fullPath = resolve(projectPath, file.path);
@@ -62,13 +63,29 @@ export function registerTranslate(server, context) {
62
63
  });
63
64
  const implDir = resolve(canonDir(projectPath), canon_name, 'implementations');
64
65
  ensureDir(implDir);
65
- const implPath = resolve(implDir, `${date}-collapse.md`);
66
+ const implPath = resolve(implDir, `${dateForFilename}-collapse.md`);
66
67
  writeFile(implPath, manifest);
67
- manifestPath = `canon/${canon_name}/implementations/${date}-collapse.md`;
68
+ manifestPath = `canon/${canon_name}/implementations/${dateForFilename}-collapse.md`;
69
+ }
70
+ // Load deferred post-convergence instructions
71
+ let deferredInstructions;
72
+ try {
73
+ // Determine mode from canon metadata or stamp
74
+ const stamp = extractConvergenceStamp(dialogContent ?? '');
75
+ const commandName = stamp?.type === 'converged-dialog' || stamp?.type === 'converged-quick' ? 'dialog' : 'start';
76
+ deferredInstructions = assembleDeferredPrompt({
77
+ phase: 'post',
78
+ commandName,
79
+ protocolDir: context.protocolDir,
80
+ });
81
+ }
82
+ catch {
83
+ // Deferred loading is best-effort — translate must never break
68
84
  }
69
85
  return success({
70
86
  files_written: filesWritten,
71
87
  ...(manifestPath ? { manifest_path: manifestPath } : {}),
88
+ ...(deferredInstructions ? { deferred_instructions: deferredInstructions } : {}),
72
89
  });
73
90
  }
74
91
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/tools/translate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/tools/translate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pantion/dialogs",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "The Pantion Dialog — turn ideas into unambiguous intent through dialog",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",