@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.
- package/dialogs/dialog-builder/convergence-rules.md +64 -0
- package/dialogs/dialog-builder/dialog.json +10 -0
- package/dialogs/dialog-builder/prompts/convergence-intro.md +21 -0
- package/dialogs/dialog-builder/prompts/translate-intro.md +17 -0
- package/dialogs/dialog-builder/translate.md +46 -0
- package/dialogs/image/convergence-rules.md +55 -0
- package/dialogs/image/dialog.json +12 -0
- package/dialogs/image/prompts/convergence-intro.md +25 -0
- package/dialogs/image/prompts/translate-intro.md +37 -0
- package/dialogs/image/translate.md +67 -0
- package/dialogs/software/convergence-rules.md +29 -0
- package/dialogs/software/dialog.json +12 -0
- package/dialogs/software/prompts/convergence-intro.md +22 -0
- package/dialogs/software/prompts/translate-intro.md +19 -0
- package/dialogs/software/translate.md +74 -0
- package/dialogs/software-brownfield/convergence-rules.md +109 -0
- package/dialogs/software-brownfield/dialog.json +12 -0
- package/dialogs/software-brownfield/prompts/convergence-intro.md +26 -0
- package/dialogs/software-brownfield/prompts/translate-intro.md +13 -0
- package/dialogs/software-brownfield/translate.md +56 -0
- package/dialogs/video/convergence-rules.md +96 -0
- package/dialogs/video/dialog.json +12 -0
- package/dialogs/video/prompts/convergence-intro.md +28 -0
- package/dialogs/video/prompts/translate-intro.md +41 -0
- package/dialogs/video/translate.md +81 -0
- package/dist/core/canon/index-manager.d.ts +27 -0
- package/dist/core/canon/index-manager.d.ts.map +1 -0
- package/dist/core/canon/index-manager.js +127 -0
- package/dist/core/canon/index-manager.js.map +1 -0
- package/dist/core/canon/manifest.d.ts +21 -0
- package/dist/core/canon/manifest.d.ts.map +1 -0
- package/dist/core/canon/manifest.js +56 -0
- package/dist/core/canon/manifest.js.map +1 -0
- package/dist/core/canon/validator.d.ts +12 -0
- package/dist/core/canon/validator.d.ts.map +1 -0
- package/dist/core/canon/validator.js +320 -0
- package/dist/core/canon/validator.js.map +1 -0
- package/dist/core/dialog/canon-writer.d.ts +22 -0
- package/dist/core/dialog/canon-writer.d.ts.map +1 -0
- package/dist/core/dialog/canon-writer.js +96 -0
- package/dist/core/dialog/canon-writer.js.map +1 -0
- package/dist/core/dialog/registry.d.ts +10 -0
- package/dist/core/dialog/registry.d.ts.map +1 -0
- package/dist/core/dialog/registry.js +102 -0
- package/dist/core/dialog/registry.js.map +1 -0
- package/dist/core/dialog/selector.d.ts +11 -0
- package/dist/core/dialog/selector.d.ts.map +1 -0
- package/dist/core/dialog/selector.js +32 -0
- package/dist/core/dialog/selector.js.map +1 -0
- package/dist/core/index.d.ts +20 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +30 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/protocol/convergence.d.ts +11 -0
- package/dist/core/protocol/convergence.d.ts.map +1 -0
- package/dist/core/protocol/convergence.js +30 -0
- package/dist/core/protocol/convergence.js.map +1 -0
- package/dist/core/protocol/loader.d.ts +6 -0
- package/dist/core/protocol/loader.d.ts.map +1 -0
- package/dist/core/protocol/loader.js +31 -0
- package/dist/core/protocol/loader.js.map +1 -0
- package/dist/core/protocol/stamp-parser.d.ts +46 -0
- package/dist/core/protocol/stamp-parser.d.ts.map +1 -0
- package/dist/core/protocol/stamp-parser.js +333 -0
- package/dist/core/protocol/stamp-parser.js.map +1 -0
- package/dist/core/protocol/system-prompt.d.ts +16 -0
- package/dist/core/protocol/system-prompt.d.ts.map +1 -0
- package/dist/core/protocol/system-prompt.js +68 -0
- package/dist/core/protocol/system-prompt.js.map +1 -0
- package/dist/core/session/canon-writer.d.ts +33 -0
- package/dist/core/session/canon-writer.d.ts.map +1 -0
- package/dist/core/session/canon-writer.js +152 -0
- package/dist/core/session/canon-writer.js.map +1 -0
- package/dist/core/session/manager.d.ts +10 -0
- package/dist/core/session/manager.d.ts.map +1 -0
- package/dist/core/session/manager.js +105 -0
- package/dist/core/session/manager.js.map +1 -0
- package/dist/core/skill/canon-writer.d.ts +22 -0
- package/dist/core/skill/canon-writer.d.ts.map +1 -0
- package/dist/core/skill/canon-writer.js +96 -0
- package/dist/core/skill/canon-writer.js.map +1 -0
- package/dist/core/skill/registry.d.ts +10 -0
- package/dist/core/skill/registry.d.ts.map +1 -0
- package/dist/core/skill/registry.js +102 -0
- package/dist/core/skill/registry.js.map +1 -0
- package/dist/core/skill/selector.d.ts +11 -0
- package/dist/core/skill/selector.d.ts.map +1 -0
- package/dist/core/skill/selector.js +32 -0
- package/dist/core/skill/selector.js.map +1 -0
- package/dist/core/soul/registry.d.ts +10 -0
- package/dist/core/soul/registry.d.ts.map +1 -0
- package/dist/core/soul/registry.js +73 -0
- package/dist/core/soul/registry.js.map +1 -0
- package/dist/core/types.d.ts +154 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils/fs.d.ts +14 -0
- package/dist/core/utils/fs.d.ts.map +1 -0
- package/dist/core/utils/fs.js +44 -0
- package/dist/core/utils/fs.js.map +1 -0
- package/dist/core/utils/project-detect.d.ts +3 -0
- package/dist/core/utils/project-detect.d.ts.map +1 -0
- package/dist/core/utils/project-detect.js +38 -0
- package/dist/core/utils/project-detect.js.map +1 -0
- package/dist/feature-set.d.ts +14 -0
- package/dist/feature-set.d.ts.map +1 -0
- package/dist/feature-set.js +38 -0
- package/dist/feature-set.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/convergence-prompts.d.ts +4 -0
- package/dist/prompts/convergence-prompts.d.ts.map +1 -0
- package/dist/prompts/convergence-prompts.js +76 -0
- package/dist/prompts/convergence-prompts.js.map +1 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +7 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/workflow-prompts.d.ts +9 -0
- package/dist/prompts/workflow-prompts.d.ts.map +1 -0
- package/dist/prompts/workflow-prompts.js +265 -0
- package/dist/prompts/workflow-prompts.js.map +1 -0
- package/dist/resources/canon-resources.d.ts +4 -0
- package/dist/resources/canon-resources.d.ts.map +1 -0
- package/dist/resources/canon-resources.js +164 -0
- package/dist/resources/canon-resources.js.map +1 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +47 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/amend.d.ts +4 -0
- package/dist/tools/amend.d.ts.map +1 -0
- package/dist/tools/amend.js +106 -0
- package/dist/tools/amend.js.map +1 -0
- package/dist/tools/approve.d.ts +4 -0
- package/dist/tools/approve.d.ts.map +1 -0
- package/dist/tools/approve.js +60 -0
- package/dist/tools/approve.js.map +1 -0
- package/dist/tools/check-convergence.d.ts +4 -0
- package/dist/tools/check-convergence.d.ts.map +1 -0
- package/dist/tools/check-convergence.js +50 -0
- package/dist/tools/check-convergence.js.map +1 -0
- package/dist/tools/check.d.ts +4 -0
- package/dist/tools/check.d.ts.map +1 -0
- package/dist/tools/check.js +190 -0
- package/dist/tools/check.js.map +1 -0
- package/dist/tools/create-dialog.d.ts +4 -0
- package/dist/tools/create-dialog.d.ts.map +1 -0
- package/dist/tools/create-dialog.js +58 -0
- package/dist/tools/create-dialog.js.map +1 -0
- package/dist/tools/create-skill.d.ts +4 -0
- package/dist/tools/create-skill.d.ts.map +1 -0
- package/dist/tools/create-skill.js +58 -0
- package/dist/tools/create-skill.js.map +1 -0
- package/dist/tools/decompose.d.ts +4 -0
- package/dist/tools/decompose.d.ts.map +1 -0
- package/dist/tools/decompose.js +56 -0
- package/dist/tools/decompose.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +49 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-canons.d.ts +4 -0
- package/dist/tools/list-canons.d.ts.map +1 -0
- package/dist/tools/list-canons.js +28 -0
- package/dist/tools/list-canons.js.map +1 -0
- package/dist/tools/migrate.d.ts +4 -0
- package/dist/tools/migrate.d.ts.map +1 -0
- package/dist/tools/migrate.js +38 -0
- package/dist/tools/migrate.js.map +1 -0
- package/dist/tools/onboard.d.ts +4 -0
- package/dist/tools/onboard.d.ts.map +1 -0
- package/dist/tools/onboard.js +27 -0
- package/dist/tools/onboard.js.map +1 -0
- package/dist/tools/reconverge.d.ts +4 -0
- package/dist/tools/reconverge.d.ts.map +1 -0
- package/dist/tools/reconverge.js +68 -0
- package/dist/tools/reconverge.js.map +1 -0
- package/dist/tools/redialog.d.ts +4 -0
- package/dist/tools/redialog.d.ts.map +1 -0
- package/dist/tools/redialog.js +63 -0
- package/dist/tools/redialog.js.map +1 -0
- package/dist/tools/reflect.d.ts +4 -0
- package/dist/tools/reflect.d.ts.map +1 -0
- package/dist/tools/reflect.js +86 -0
- package/dist/tools/reflect.js.map +1 -0
- package/dist/tools/reject.d.ts +4 -0
- package/dist/tools/reject.d.ts.map +1 -0
- package/dist/tools/reject.js +57 -0
- package/dist/tools/reject.js.map +1 -0
- package/dist/tools/reskill.d.ts +4 -0
- package/dist/tools/reskill.d.ts.map +1 -0
- package/dist/tools/reskill.js +63 -0
- package/dist/tools/reskill.js.map +1 -0
- package/dist/tools/resume.d.ts +4 -0
- package/dist/tools/resume.d.ts.map +1 -0
- package/dist/tools/resume.js +56 -0
- package/dist/tools/resume.js.map +1 -0
- package/dist/tools/reverse.d.ts +4 -0
- package/dist/tools/reverse.d.ts.map +1 -0
- package/dist/tools/reverse.js +32 -0
- package/dist/tools/reverse.js.map +1 -0
- package/dist/tools/save-canon.d.ts +4 -0
- package/dist/tools/save-canon.d.ts.map +1 -0
- package/dist/tools/save-canon.js +97 -0
- package/dist/tools/save-canon.js.map +1 -0
- package/dist/tools/start.d.ts +4 -0
- package/dist/tools/start.d.ts.map +1 -0
- package/dist/tools/start.js +83 -0
- package/dist/tools/start.js.map +1 -0
- package/dist/tools/translate.d.ts +4 -0
- package/dist/tools/translate.d.ts.map +1 -0
- package/dist/tools/translate.js +102 -0
- package/dist/tools/translate.js.map +1 -0
- package/dist/tools/update.d.ts +4 -0
- package/dist/tools/update.d.ts.map +1 -0
- package/dist/tools/update.js +42 -0
- package/dist/tools/update.js.map +1 -0
- package/dist/tools/validate.d.ts +4 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +86 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/utils/response.d.ts +12 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +18 -0
- package/dist/utils/response.js.map +1 -0
- package/package.json +37 -0
- package/protocol/commands/amend.md +188 -0
- package/protocol/commands/build.md +90 -0
- package/protocol/commands/check.md +255 -0
- package/protocol/commands/create-dialog.md +81 -0
- package/protocol/commands/decompose.md +230 -0
- package/protocol/commands/dialog.md +173 -0
- package/protocol/commands/help.md +121 -0
- package/protocol/commands/migrate.md +173 -0
- package/protocol/commands/onboard.md +210 -0
- package/protocol/commands/quick.md +170 -0
- package/protocol/commands/redialog.md +73 -0
- package/protocol/commands/reflect.md +136 -0
- package/protocol/commands/resume.md +148 -0
- package/protocol/commands/reverse.md +312 -0
- package/protocol/commands/start.md +220 -0
- package/protocol/commands/translate.md +157 -0
- package/protocol/commands/update.md +205 -0
- package/protocol/core-advanced.md +188 -0
- package/protocol/core.md +274 -0
- package/protocol/pantion-future-prompt.md +88 -0
- package/protocol/pantion-intent.md +78 -0
- package/protocol/templates/acceptance-tests.md +116 -0
- package/protocol/templates/behavior-map.md +135 -0
- package/protocol/templates/traceability-map.md +56 -0
- package/souls/beginner/rules.md +34 -0
- package/souls/beginner/soul.json +6 -0
- package/souls/default/rules.md +25 -0
- package/souls/default/soul.json +6 -0
- package/souls/young/rules.md +67 -0
- package/souls/young/soul.json +6 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../../src/core/dialog/selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,WAAmB,EAAE,UAAmB;IAC5F,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IACE,OAAO,CAAC,MAAM,GAAG,SAAS;YAC1B,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC1F,CAAC;YACD,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3B,SAAS,GAAG,GAAG,CAAC;YAChB,YAAY,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type { Message, Session, SessionMeta, SessionStatus, Dialog, DialogManifest, Soul, SoulManifest, OpenQuestion, ConvergenceStamp, ProgressStamp, HumanStamp, HumanStampStatus, ConvergenceEvent, ValidationResult, ValidationIssue, ChecklistCategory, ChecklistStatus, TotalOutcome, CanonMetadata, CanonEntry, ProjectContext, } from './types.js';
|
|
2
|
+
export { extractConvergenceStamp, extractProgressStamp, extractHumanStamp, formatHumanStamp, createPendingHumanStamp, createAutoApprovedHumanStamp, replaceHumanStamp, formatCanonMetadata, extractCanonMetadata, extractOpenQuestionIds, } from './protocol/stamp-parser.js';
|
|
3
|
+
export { detectConvergence, detectStopSignal, } from './protocol/convergence.js';
|
|
4
|
+
export { assembleSystemPrompt, } from './protocol/system-prompt.js';
|
|
5
|
+
export type { SystemPromptOptions } from './protocol/system-prompt.js';
|
|
6
|
+
export { loadProtocolCore, loadProtocolCommand, getProtocolDirectory, } from './protocol/loader.js';
|
|
7
|
+
export { createSession, saveSession, loadSession, listSessions, getLastSession, findSessionByName, addMessage, updateStatus, } from './session/manager.js';
|
|
8
|
+
export { writeDialogFile, writeSummaryFile, appendAmendment, appendRealityConvergence, updateCanonIndex, } from './session/canon-writer.js';
|
|
9
|
+
export { validateConvergence, validateCanonFile, } from './canon/validator.js';
|
|
10
|
+
export { generateManifest, } from './canon/manifest.js';
|
|
11
|
+
export type { ManifestInput } from './canon/manifest.js';
|
|
12
|
+
export { readCanonIndex, addCanonToIndex, updateCanonInIndex, regenerateIndex, } from './canon/index-manager.js';
|
|
13
|
+
export { listDialogs, getDialog, } from './dialog/registry.js';
|
|
14
|
+
export { writeDialogCanonFile, writeDialogSummaryFile, dialogHasCanon, readDialogCanon, dialogCanonDir, } from './dialog/canon-writer.js';
|
|
15
|
+
export { listSouls, getSoul, } from './soul/registry.js';
|
|
16
|
+
export { autoSelectDialog, } from './dialog/selector.js';
|
|
17
|
+
export type { DialogSelection } from './dialog/selector.js';
|
|
18
|
+
export { assertPathWithin, assertSafeName, canonDir, ensureDir, writeFile, readFileSafe, } from './utils/fs.js';
|
|
19
|
+
export { detectProjectContext, } from './utils/project-detect.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,OAAO,EACP,OAAO,EACP,WAAW,EACX,aAAa,EACb,MAAM,EACN,cAAc,EACd,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,WAAW,EACX,SAAS,GACV,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,SAAS,EACT,OAAO,GACR,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,GACrB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// === Protocol: Stamp Parsing ===
|
|
2
|
+
export { extractConvergenceStamp, extractProgressStamp, extractHumanStamp, formatHumanStamp, createPendingHumanStamp, createAutoApprovedHumanStamp, replaceHumanStamp, formatCanonMetadata, extractCanonMetadata, extractOpenQuestionIds, } from './protocol/stamp-parser.js';
|
|
3
|
+
// === Protocol: Convergence Detection ===
|
|
4
|
+
export { detectConvergence, detectStopSignal, } from './protocol/convergence.js';
|
|
5
|
+
// === Protocol: System Prompt Assembly ===
|
|
6
|
+
export { assembleSystemPrompt, } from './protocol/system-prompt.js';
|
|
7
|
+
// === Protocol: Loader ===
|
|
8
|
+
export { loadProtocolCore, loadProtocolCommand, getProtocolDirectory, } from './protocol/loader.js';
|
|
9
|
+
// === Session Management ===
|
|
10
|
+
export { createSession, saveSession, loadSession, listSessions, getLastSession, findSessionByName, addMessage, updateStatus, } from './session/manager.js';
|
|
11
|
+
// === Canon Writer ===
|
|
12
|
+
export { writeDialogFile, writeSummaryFile, appendAmendment, appendRealityConvergence, updateCanonIndex, } from './session/canon-writer.js';
|
|
13
|
+
// === Canon Validator ===
|
|
14
|
+
export { validateConvergence, validateCanonFile, } from './canon/validator.js';
|
|
15
|
+
// === Implementation Manifest ===
|
|
16
|
+
export { generateManifest, } from './canon/manifest.js';
|
|
17
|
+
// === Canon Index ===
|
|
18
|
+
export { readCanonIndex, addCanonToIndex, updateCanonInIndex, regenerateIndex, } from './canon/index-manager.js';
|
|
19
|
+
// === Dialog Registry ===
|
|
20
|
+
export { listDialogs, getDialog, } from './dialog/registry.js';
|
|
21
|
+
// === Dialog Canon Writer ===
|
|
22
|
+
export { writeDialogCanonFile, writeDialogSummaryFile, dialogHasCanon, readDialogCanon, dialogCanonDir, } from './dialog/canon-writer.js';
|
|
23
|
+
// === Soul Registry ===
|
|
24
|
+
export { listSouls, getSoul, } from './soul/registry.js';
|
|
25
|
+
// === Dialog Selector ===
|
|
26
|
+
export { autoSelectDialog, } from './dialog/selector.js';
|
|
27
|
+
// === Utils ===
|
|
28
|
+
export { assertPathWithin, assertSafeName, canonDir, ensureDir, writeFile, readFileSafe, } from './utils/fs.js';
|
|
29
|
+
export { detectProjectContext, } from './utils/project-detect.js';
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AA0BA,kCAAkC;AAClC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAEpC,0CAA0C;AAC1C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,2CAA2C;AAC3C,OAAO,EACL,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAGrC,2BAA2B;AAC3B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,uBAAuB;AACvB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,0BAA0B;AAC1B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,kCAAkC;AAClC,OAAO,EACL,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,sBAAsB;AACtB,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,0BAA0B;AAC1B,OAAO,EACL,WAAW,EACX,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,wBAAwB;AACxB,OAAO,EACL,SAAS,EACT,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,0BAA0B;AAC1B,OAAO,EACL,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,gBAAgB;AAChB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,GACrB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ConvergenceEvent } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if an LLM response contains a convergence or progress stamp.
|
|
4
|
+
* Called after each assistant message to detect phase transitions.
|
|
5
|
+
*/
|
|
6
|
+
export declare function detectConvergence(assistantMessage: string): ConvergenceEvent;
|
|
7
|
+
/**
|
|
8
|
+
* Check if text contains a signal that the user wants to stop.
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectStopSignal(userMessage: string): boolean;
|
|
11
|
+
//# sourceMappingURL=convergence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convergence.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/convergence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,gBAAgB,CAY5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAS7D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { extractConvergenceStamp, extractProgressStamp } from './stamp-parser.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if an LLM response contains a convergence or progress stamp.
|
|
4
|
+
* Called after each assistant message to detect phase transitions.
|
|
5
|
+
*/
|
|
6
|
+
export function detectConvergence(assistantMessage) {
|
|
7
|
+
const convergenceStamp = extractConvergenceStamp(assistantMessage);
|
|
8
|
+
if (convergenceStamp && convergenceStamp.type !== 'draft') {
|
|
9
|
+
return { type: 'converged', stamp: convergenceStamp };
|
|
10
|
+
}
|
|
11
|
+
const progressStamp = extractProgressStamp(assistantMessage);
|
|
12
|
+
if (progressStamp) {
|
|
13
|
+
return { type: 'draft', stamp: progressStamp };
|
|
14
|
+
}
|
|
15
|
+
return { type: 'none' };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if text contains a signal that the user wants to stop.
|
|
19
|
+
*/
|
|
20
|
+
export function detectStopSignal(userMessage) {
|
|
21
|
+
const lower = userMessage.toLowerCase().trim();
|
|
22
|
+
const stopPhrases = [
|
|
23
|
+
'/stop', '/quit', '/exit', '/pause',
|
|
24
|
+
'stop', 'quit', 'exit', 'pause',
|
|
25
|
+
'laten we stoppen', 'we stoppen',
|
|
26
|
+
'genoeg voor nu', 'tot hier',
|
|
27
|
+
];
|
|
28
|
+
return stopPhrases.some((p) => lower === p);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=convergence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../../src/core/protocol/convergence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGlF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,gBAAwB;IACxD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IACnE,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;QACnC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;QAC/B,kBAAkB,EAAE,YAAY;QAChC,gBAAgB,EAAE,UAAU;KAC7B,CAAC;IACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function loadProtocolCore(protocolDir: string, options?: {
|
|
2
|
+
includeAdvanced?: boolean;
|
|
3
|
+
}): string;
|
|
4
|
+
export declare function loadProtocolCommand(name: string, protocolDir: string): string;
|
|
5
|
+
export declare function getProtocolDirectory(protocolDir: string): string;
|
|
6
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/loader.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAarG;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAO7E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
function assertDir(protocolDir) {
|
|
4
|
+
if (existsSync(protocolDir))
|
|
5
|
+
return protocolDir;
|
|
6
|
+
throw new Error(`Protocol directory not found: ${protocolDir}`);
|
|
7
|
+
}
|
|
8
|
+
export function loadProtocolCore(protocolDir, options) {
|
|
9
|
+
const dir = assertDir(protocolDir);
|
|
10
|
+
const corePath = resolve(dir, 'core.md');
|
|
11
|
+
let content = readFileSync(corePath, 'utf-8');
|
|
12
|
+
if (options?.includeAdvanced) {
|
|
13
|
+
const advancedPath = resolve(dir, 'core-advanced.md');
|
|
14
|
+
if (existsSync(advancedPath)) {
|
|
15
|
+
content += '\n\n' + readFileSync(advancedPath, 'utf-8');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return content;
|
|
19
|
+
}
|
|
20
|
+
export function loadProtocolCommand(name, protocolDir) {
|
|
21
|
+
const dir = assertDir(protocolDir);
|
|
22
|
+
const cmdPath = resolve(dir, 'commands', `${name}.md`);
|
|
23
|
+
if (!existsSync(cmdPath)) {
|
|
24
|
+
throw new Error(`Protocol command not found: ${name}`);
|
|
25
|
+
}
|
|
26
|
+
return readFileSync(cmdPath, 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
export function getProtocolDirectory(protocolDir) {
|
|
29
|
+
return assertDir(protocolDir);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/protocol/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,SAAS,CAAC,WAAmB;IACpC,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,MAAM,IAAI,KAAK,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,OAAuC;IAC3F,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE9C,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,WAAmB;IACnE,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ConvergenceStamp, ProgressStamp, HumanStamp, HumanStampStatus, CanonMetadata, OpenQuestion } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract OPEN QUESTION [OQ-NNN] patterns from dialog text.
|
|
4
|
+
* Returns an array of OpenQuestion objects (without resolvedAt — that comes from the stamp).
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractOpenQuestionIds(text: string): OpenQuestion[];
|
|
7
|
+
export declare function extractConvergenceStamp(text: string): ConvergenceStamp | null;
|
|
8
|
+
export declare function extractProgressStamp(text: string): ProgressStamp | null;
|
|
9
|
+
/**
|
|
10
|
+
* Extract the HUMAN STAMP from text.
|
|
11
|
+
* Returns null if no HUMAN STAMP block found.
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractHumanStamp(text: string): HumanStamp | null;
|
|
14
|
+
/**
|
|
15
|
+
* Format a HUMAN STAMP block as a string.
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatHumanStamp(stamp: {
|
|
18
|
+
status: HumanStampStatus;
|
|
19
|
+
date?: string;
|
|
20
|
+
role?: string;
|
|
21
|
+
note?: string;
|
|
22
|
+
}): string;
|
|
23
|
+
/**
|
|
24
|
+
* Create a pending HUMAN STAMP block (for new canons in full mode).
|
|
25
|
+
*/
|
|
26
|
+
export declare function createPendingHumanStamp(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Create an auto-approved HUMAN STAMP block (for dialog mode canons).
|
|
29
|
+
*/
|
|
30
|
+
export declare function createAutoApprovedHumanStamp(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Replace the HUMAN STAMP block in a text with a new one.
|
|
33
|
+
* Returns the updated text, or null if no existing HUMAN STAMP found.
|
|
34
|
+
*/
|
|
35
|
+
export declare function replaceHumanStamp(text: string, newStamp: string): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* Format a CANON METADATA block as a string.
|
|
38
|
+
* Server-generated metadata about the canon (dialog, soul, mode, check result).
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatCanonMetadata(meta: CanonMetadata): string;
|
|
41
|
+
/**
|
|
42
|
+
* Extract the CANON METADATA block from text.
|
|
43
|
+
* Returns null if no CANON METADATA block found (backward compat).
|
|
44
|
+
*/
|
|
45
|
+
export declare function extractCanonMetadata(text: string): CanonMetadata | null;
|
|
46
|
+
//# sourceMappingURL=stamp-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stamp-parser.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/stamp-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkH9H;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAenE;AAsBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAiC7E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA6CvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA+BjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAST;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAOrD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS/E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAQ/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAiBvE"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
const STAMP_START = '=== DIALOGSPEC STAMP ===';
|
|
2
|
+
const STAMP_END = '=== /DIALOGSPEC STAMP ===';
|
|
3
|
+
const PROGRESS_START = '=== DIALOGSPEC PROGRESS ===';
|
|
4
|
+
const PROGRESS_END = '=== /DIALOGSPEC PROGRESS ===';
|
|
5
|
+
const HUMAN_START = '=== HUMAN STAMP ===';
|
|
6
|
+
const HUMAN_END = '=== /HUMAN STAMP ===';
|
|
7
|
+
const METADATA_START = '=== CANON METADATA ===';
|
|
8
|
+
const METADATA_END = '=== /CANON METADATA ===';
|
|
9
|
+
/**
|
|
10
|
+
* Normalize stamp text to handle LLM variations:
|
|
11
|
+
* - Different delimiters (---, ==, ***, varying = counts)
|
|
12
|
+
* - Extra whitespace in delimiters
|
|
13
|
+
* - Missing closing tags (infer block end)
|
|
14
|
+
*/
|
|
15
|
+
function normalizeStampText(text, stampType = 'convergence') {
|
|
16
|
+
const keyword = stampType === 'progress' ? 'DIALOGSPEC PROGRESS' : 'DIALOGSPEC STAMP';
|
|
17
|
+
const expectedStart = stampType === 'progress' ? PROGRESS_START : STAMP_START;
|
|
18
|
+
const expectedEnd = stampType === 'progress' ? PROGRESS_END : STAMP_END;
|
|
19
|
+
// Already has exact delimiters — no normalization needed
|
|
20
|
+
if (text.includes(expectedStart) && text.includes(expectedEnd))
|
|
21
|
+
return text;
|
|
22
|
+
// Pattern: 2+ repeated delimiter chars (=, -, *), optional whitespace, optional /, keyword, optional whitespace, 2+ delimiter chars
|
|
23
|
+
// Case-insensitive to handle "Dialogspec Stamp" etc.
|
|
24
|
+
const delimChars = '[=\\-*]{2,}';
|
|
25
|
+
const openPattern = new RegExp(`${delimChars}\\s*${keyword}\\s*${delimChars}`, 'i');
|
|
26
|
+
const closePattern = new RegExp(`${delimChars}\\s*/?\\s*${keyword}\\s*${delimChars}`, 'i');
|
|
27
|
+
let result = text;
|
|
28
|
+
// Find and replace opening delimiter
|
|
29
|
+
const openMatch = result.match(openPattern);
|
|
30
|
+
if (!openMatch)
|
|
31
|
+
return text; // No recognizable stamp at all
|
|
32
|
+
// Check if the opening match is actually the closing (contains /)
|
|
33
|
+
const openStr = openMatch[0];
|
|
34
|
+
if (openStr.includes('/')) {
|
|
35
|
+
// The first match is actually a closing tag; search for opening before it
|
|
36
|
+
return text;
|
|
37
|
+
}
|
|
38
|
+
result = result.replace(openMatch[0], expectedStart);
|
|
39
|
+
// Find and replace closing delimiter (must contain /)
|
|
40
|
+
const closeMatch = result.match(closePattern);
|
|
41
|
+
if (closeMatch && closeMatch[0] !== expectedStart) {
|
|
42
|
+
result = result.replace(closeMatch[0], expectedEnd);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Missing closing tag — infer block end
|
|
46
|
+
const startPos = result.indexOf(expectedStart);
|
|
47
|
+
const afterStart = result.slice(startPos + expectedStart.length);
|
|
48
|
+
// Find the end: double newline or end of text
|
|
49
|
+
const doubleNewline = afterStart.search(/\n\s*\n\s*\n/);
|
|
50
|
+
const endPos = doubleNewline !== -1
|
|
51
|
+
? startPos + expectedStart.length + doubleNewline
|
|
52
|
+
: result.length;
|
|
53
|
+
result = result.slice(0, endPos) + '\n' + expectedEnd;
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Case-insensitive getValue: finds a line starting with prefix (any casing),
|
|
59
|
+
* extracts the value after the colon.
|
|
60
|
+
*/
|
|
61
|
+
function getValue(lines, prefix) {
|
|
62
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
63
|
+
const line = lines.find((l) => l.trim().toLowerCase().startsWith(lowerPrefix));
|
|
64
|
+
if (!line)
|
|
65
|
+
return '';
|
|
66
|
+
const colonIdx = line.indexOf(':');
|
|
67
|
+
return colonIdx !== -1 ? line.slice(colonIdx + 1).trim() : '';
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Case-insensitive getList: finds a list field by prefix (any casing),
|
|
71
|
+
* supports inline comma-separated values, "none" keyword, and bullet/numbered lists.
|
|
72
|
+
*/
|
|
73
|
+
function getList(lines, prefix) {
|
|
74
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
75
|
+
const lineIdx = lines.findIndex((l) => l.trim().toLowerCase().startsWith(lowerPrefix));
|
|
76
|
+
if (lineIdx === -1)
|
|
77
|
+
return [];
|
|
78
|
+
const headerLine = lines[lineIdx];
|
|
79
|
+
const colonIdx = headerLine.indexOf(':');
|
|
80
|
+
const inline = colonIdx !== -1 ? headerLine.slice(colonIdx + 1).trim() : '';
|
|
81
|
+
if (inline && inline.toLowerCase() !== 'none') {
|
|
82
|
+
// "none (N resolved: ...)" is still "none" for the open questions list
|
|
83
|
+
if (/^none\s*\(/i.test(inline))
|
|
84
|
+
return [];
|
|
85
|
+
return inline.split(',').map((s) => s.trim()).filter(Boolean);
|
|
86
|
+
}
|
|
87
|
+
if (inline.toLowerCase() === 'none')
|
|
88
|
+
return [];
|
|
89
|
+
const items = [];
|
|
90
|
+
for (let i = lineIdx + 1; i < lines.length; i++) {
|
|
91
|
+
const trimmed = lines[i].trim();
|
|
92
|
+
if (!trimmed || trimmed.startsWith('==='))
|
|
93
|
+
continue;
|
|
94
|
+
// Case-insensitive section header detection (stops list parsing)
|
|
95
|
+
if (/^[a-z][a-z\s-]+:/i.test(trimmed) && !trimmed.match(/^\d+\.\s+/) && !trimmed.startsWith('- '))
|
|
96
|
+
break;
|
|
97
|
+
if (trimmed.match(/^\d+\.\s+/) || trimmed.startsWith('- ')) {
|
|
98
|
+
items.push(trimmed.replace(/^\d+\.\s+/, '').replace(/^- /, '').trim());
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
return items;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extract OPEN QUESTION [OQ-NNN] patterns from dialog text.
|
|
107
|
+
* Returns an array of OpenQuestion objects (without resolvedAt — that comes from the stamp).
|
|
108
|
+
*/
|
|
109
|
+
export function extractOpenQuestionIds(text) {
|
|
110
|
+
const pattern = /OPEN QUESTION \[OQ-(\d+)\]:\s*(.+)/gi;
|
|
111
|
+
const questions = [];
|
|
112
|
+
const seen = new Set();
|
|
113
|
+
let match;
|
|
114
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
115
|
+
const id = `OQ-${match[1]}`;
|
|
116
|
+
if (!seen.has(id)) {
|
|
117
|
+
seen.add(id);
|
|
118
|
+
questions.push({ id, text: match[2].trim() });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return questions;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Parse resolved references from the OPEN QUESTIONS stamp field.
|
|
125
|
+
* Format: "none (N resolved: OQ-001 at H[4], OQ-002 at A[7])"
|
|
126
|
+
*/
|
|
127
|
+
function parseResolvedReferences(value) {
|
|
128
|
+
const resolved = [];
|
|
129
|
+
const pattern = /OQ-(\d+)\s+at\s+([HA]\[\d+\])/gi;
|
|
130
|
+
let match;
|
|
131
|
+
while ((match = pattern.exec(value)) !== null) {
|
|
132
|
+
resolved.push({
|
|
133
|
+
id: `OQ-${match[1]}`,
|
|
134
|
+
text: '', // text is not available in the resolved reference
|
|
135
|
+
resolvedAt: match[2],
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return resolved;
|
|
139
|
+
}
|
|
140
|
+
export function extractConvergenceStamp(text) {
|
|
141
|
+
const normalized = normalizeStampText(text, 'convergence');
|
|
142
|
+
const startIdx = normalized.indexOf(STAMP_START);
|
|
143
|
+
const endIdx = normalized.indexOf(STAMP_END);
|
|
144
|
+
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx)
|
|
145
|
+
return null;
|
|
146
|
+
const raw = normalized.slice(startIdx, endIdx + STAMP_END.length);
|
|
147
|
+
const lines = raw.split('\n');
|
|
148
|
+
const status = getValue(lines, 'STATUS').toLowerCase();
|
|
149
|
+
let type = 'converged';
|
|
150
|
+
if (status.includes('quick'))
|
|
151
|
+
type = 'converged-quick';
|
|
152
|
+
if (status.includes('dialog'))
|
|
153
|
+
type = 'converged-dialog';
|
|
154
|
+
if (status.includes('draft'))
|
|
155
|
+
type = 'draft';
|
|
156
|
+
// Parse resolved references from OPEN QUESTIONS field value
|
|
157
|
+
const oqRawValue = getValue(lines, 'OPEN QUESTIONS');
|
|
158
|
+
const resolvedQuestions = parseResolvedReferences(oqRawValue);
|
|
159
|
+
return {
|
|
160
|
+
type,
|
|
161
|
+
date: getValue(lines, 'DATE'),
|
|
162
|
+
model: getValue(lines, 'MODEL') || undefined,
|
|
163
|
+
canonType: getValue(lines, 'CANON TYPE'),
|
|
164
|
+
parent: getValue(lines, 'PARENT'),
|
|
165
|
+
openQuestions: getList(lines, 'OPEN QUESTIONS'),
|
|
166
|
+
resolvedQuestions: resolvedQuestions.length > 0 ? resolvedQuestions : undefined,
|
|
167
|
+
inferencePolicy: getValue(lines, 'INFERENCE POLICY'),
|
|
168
|
+
stabilityZones: getList(lines, 'STABILITY ZONES'),
|
|
169
|
+
flexZones: getList(lines, 'FLEX ZONES'),
|
|
170
|
+
raw,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export function extractProgressStamp(text) {
|
|
174
|
+
const normalized = normalizeStampText(text, 'progress');
|
|
175
|
+
const startIdx = normalized.indexOf(PROGRESS_START);
|
|
176
|
+
const endIdx = normalized.indexOf(PROGRESS_END);
|
|
177
|
+
if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx)
|
|
178
|
+
return null;
|
|
179
|
+
const raw = normalized.slice(startIdx, endIdx + PROGRESS_END.length);
|
|
180
|
+
const lines = raw.split('\n');
|
|
181
|
+
const statusVal = getValue(lines, 'STATUS');
|
|
182
|
+
const sessionMatch = statusVal.match(/session\s+(\d+)/i);
|
|
183
|
+
const session = sessionMatch ? parseInt(sessionMatch[1], 10) : 1;
|
|
184
|
+
const extractListSection = (prefix) => {
|
|
185
|
+
const lowerPrefix = prefix.toLowerCase();
|
|
186
|
+
const items = [];
|
|
187
|
+
let inSection = false;
|
|
188
|
+
for (const line of lines) {
|
|
189
|
+
if (line.trim().toLowerCase().startsWith(lowerPrefix)) {
|
|
190
|
+
inSection = true;
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (inSection) {
|
|
194
|
+
const trimmed = line.trim();
|
|
195
|
+
if (trimmed.match(/^\d+\.\s+/) || trimmed.startsWith('- ')) {
|
|
196
|
+
items.push(trimmed.replace(/^\d+\.\s+/, '').replace(/^- /, ''));
|
|
197
|
+
}
|
|
198
|
+
else if (trimmed && !trimmed.startsWith('===')) {
|
|
199
|
+
inSection = false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return items;
|
|
204
|
+
};
|
|
205
|
+
return {
|
|
206
|
+
type: 'draft',
|
|
207
|
+
date: getValue(lines, 'DATE'),
|
|
208
|
+
session,
|
|
209
|
+
canonType: getValue(lines, 'CANON TYPE'),
|
|
210
|
+
resolved: extractListSection('RESOLVED'),
|
|
211
|
+
openQuestions: extractListSection('REMAINING OPEN QUESTIONS'),
|
|
212
|
+
nextFocus: getValue(lines, 'NEXT SESSION FOCUS'),
|
|
213
|
+
raw,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Extract the HUMAN STAMP from text.
|
|
218
|
+
* Returns null if no HUMAN STAMP block found.
|
|
219
|
+
*/
|
|
220
|
+
export function extractHumanStamp(text) {
|
|
221
|
+
const startIdx = text.indexOf(HUMAN_START);
|
|
222
|
+
if (startIdx === -1)
|
|
223
|
+
return null;
|
|
224
|
+
let endIdx = text.indexOf(HUMAN_END);
|
|
225
|
+
if (endIdx === -1 || endIdx <= startIdx) {
|
|
226
|
+
// Infer end from double newline or end of text
|
|
227
|
+
const afterStart = text.slice(startIdx + HUMAN_START.length);
|
|
228
|
+
const doubleNewline = afterStart.search(/\n\s*\n\s*\n/);
|
|
229
|
+
endIdx = doubleNewline !== -1
|
|
230
|
+
? startIdx + HUMAN_START.length + doubleNewline
|
|
231
|
+
: text.length;
|
|
232
|
+
// Reconstruct with closing tag for raw
|
|
233
|
+
}
|
|
234
|
+
const raw = text.slice(startIdx, endIdx + HUMAN_END.length);
|
|
235
|
+
const lines = raw.split('\n');
|
|
236
|
+
const statusVal = getValue(lines, 'STATUS').toUpperCase();
|
|
237
|
+
let status = 'PENDING';
|
|
238
|
+
if (statusVal === 'APPROVED')
|
|
239
|
+
status = 'APPROVED';
|
|
240
|
+
if (statusVal === 'REJECTED')
|
|
241
|
+
status = 'REJECTED';
|
|
242
|
+
if (statusVal === 'AUTO-APPROVED')
|
|
243
|
+
status = 'AUTO-APPROVED';
|
|
244
|
+
return {
|
|
245
|
+
status,
|
|
246
|
+
date: getValue(lines, 'DATE'),
|
|
247
|
+
role: getValue(lines, 'ROLE'),
|
|
248
|
+
note: getValue(lines, 'NOTE'),
|
|
249
|
+
raw,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Format a HUMAN STAMP block as a string.
|
|
254
|
+
*/
|
|
255
|
+
export function formatHumanStamp(stamp) {
|
|
256
|
+
return [
|
|
257
|
+
HUMAN_START,
|
|
258
|
+
`DATE: ${stamp.date ?? '[not set]'}`,
|
|
259
|
+
`ROLE: ${stamp.role ?? '[not set]'}`,
|
|
260
|
+
`STATUS: ${stamp.status}`,
|
|
261
|
+
`NOTE: ${stamp.note ?? '[not set]'}`,
|
|
262
|
+
HUMAN_END,
|
|
263
|
+
].join('\n');
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Create a pending HUMAN STAMP block (for new canons in full mode).
|
|
267
|
+
*/
|
|
268
|
+
export function createPendingHumanStamp() {
|
|
269
|
+
return formatHumanStamp({ status: 'PENDING' });
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Create an auto-approved HUMAN STAMP block (for dialog mode canons).
|
|
273
|
+
*/
|
|
274
|
+
export function createAutoApprovedHumanStamp() {
|
|
275
|
+
return formatHumanStamp({
|
|
276
|
+
status: 'AUTO-APPROVED',
|
|
277
|
+
date: new Date().toISOString().split('T')[0],
|
|
278
|
+
role: 'dialog-mode',
|
|
279
|
+
note: 'Auto-approved (dialog mode)',
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Replace the HUMAN STAMP block in a text with a new one.
|
|
284
|
+
* Returns the updated text, or null if no existing HUMAN STAMP found.
|
|
285
|
+
*/
|
|
286
|
+
export function replaceHumanStamp(text, newStamp) {
|
|
287
|
+
const startIdx = text.indexOf(HUMAN_START);
|
|
288
|
+
if (startIdx === -1)
|
|
289
|
+
return null;
|
|
290
|
+
let endIdx = text.indexOf(HUMAN_END);
|
|
291
|
+
if (endIdx === -1)
|
|
292
|
+
return null;
|
|
293
|
+
endIdx += HUMAN_END.length;
|
|
294
|
+
return text.slice(0, startIdx) + newStamp + text.slice(endIdx);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Format a CANON METADATA block as a string.
|
|
298
|
+
* Server-generated metadata about the canon (dialog, soul, mode, check result).
|
|
299
|
+
*/
|
|
300
|
+
export function formatCanonMetadata(meta) {
|
|
301
|
+
const lines = [METADATA_START];
|
|
302
|
+
if (meta.dialog)
|
|
303
|
+
lines.push(`DIALOG: ${meta.dialog}`);
|
|
304
|
+
if (meta.soul)
|
|
305
|
+
lines.push(`SOUL: ${meta.soul}`);
|
|
306
|
+
if (meta.mode)
|
|
307
|
+
lines.push(`MODE: ${meta.mode}`);
|
|
308
|
+
if (meta.checkResult)
|
|
309
|
+
lines.push(`CHECK RESULT: ${meta.checkResult}`);
|
|
310
|
+
lines.push(METADATA_END);
|
|
311
|
+
return lines.join('\n');
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Extract the CANON METADATA block from text.
|
|
315
|
+
* Returns null if no CANON METADATA block found (backward compat).
|
|
316
|
+
*/
|
|
317
|
+
export function extractCanonMetadata(text) {
|
|
318
|
+
const startIdx = text.indexOf(METADATA_START);
|
|
319
|
+
if (startIdx === -1)
|
|
320
|
+
return null;
|
|
321
|
+
const endIdx = text.indexOf(METADATA_END);
|
|
322
|
+
if (endIdx === -1 || endIdx <= startIdx)
|
|
323
|
+
return null;
|
|
324
|
+
const raw = text.slice(startIdx, endIdx + METADATA_END.length);
|
|
325
|
+
const lines = raw.split('\n');
|
|
326
|
+
const dialog = getValue(lines, 'DIALOG') || getValue(lines, 'SKILL') || undefined;
|
|
327
|
+
const soul = getValue(lines, 'SOUL') || undefined;
|
|
328
|
+
const modeVal = getValue(lines, 'MODE') || undefined;
|
|
329
|
+
const mode = (modeVal === 'dialog' || modeVal === 'full') ? modeVal : undefined;
|
|
330
|
+
const checkResult = getValue(lines, 'CHECK RESULT') || undefined;
|
|
331
|
+
return { dialog, soul, mode, checkResult };
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=stamp-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stamp-parser.js","sourceRoot":"","sources":["../../../src/core/protocol/stamp-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SystemPromptOptions {
|
|
2
|
+
mode: 'start' | 'resume' | 'quick' | 'dialog' | 'amend' | 'check' | 'translate' | 'reconverge' | 'decompose' | 'reverse' | 'onboard' | 'update' | 'migrate';
|
|
3
|
+
dialogRules?: string;
|
|
4
|
+
soulRules?: string;
|
|
5
|
+
canonName?: string;
|
|
6
|
+
existingDialog?: string;
|
|
7
|
+
userLanguage?: string;
|
|
8
|
+
protocolDir: string;
|
|
9
|
+
inferencePolicy?: 'conservative' | 'strict';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Assemble the full system prompt from protocol core + command + skill rules.
|
|
13
|
+
* This is the bridge between the protocol .md files and the LLM.
|
|
14
|
+
*/
|
|
15
|
+
export declare function assembleSystemPrompt(options: SystemPromptOptions): string;
|
|
16
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/system-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5J,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAsEzE"}
|