opensquid 0.5.441 → 0.5.447
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/functions/arm_scope.d.ts +27 -0
- package/dist/functions/arm_scope.d.ts.map +1 -0
- package/dist/functions/arm_scope.js +52 -0
- package/dist/functions/arm_scope.js.map +1 -0
- package/dist/functions/index.d.ts +1 -0
- package/dist/functions/index.d.ts.map +1 -1
- package/dist/functions/index.js +1 -0
- package/dist/functions/index.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/bootstrap.js +2 -0
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/handoff/render.d.ts +5 -4
- package/dist/runtime/handoff/render.d.ts.map +1 -1
- package/dist/runtime/handoff/render.js +7 -7
- package/dist/runtime/handoff/render.js.map +1 -1
- package/dist/runtime/hooks/active_task_mirror.js +0 -0
- package/dist/runtime/hooks/apply_patch.js +0 -0
- package/dist/runtime/hooks/dispatch.js +0 -0
- package/dist/runtime/hooks/hook_output.js +0 -0
- package/dist/runtime/hooks/memory_reconcile.js +0 -0
- package/dist/runtime/hooks/new_project_detect.js +0 -0
- package/dist/runtime/hooks/profession_resolver.js +0 -0
- package/dist/runtime/hooks/scope_intent.js +0 -0
- package/dist/runtime/hooks/session_id.js +0 -0
- package/dist/runtime/hooks/session_liveness.js +0 -0
- package/dist/runtime/hooks/stop_drive.js +0 -0
- package/dist/runtime/hooks/stop_stream.js +0 -0
- package/dist/runtime/hooks/subagent_guard.js +0 -0
- package/dist/runtime/hooks/transcript.js +0 -0
- package/dist/runtime/hooks/transcript_tasks.js +0 -0
- package/dist/runtime/ralph/orchestrator.d.ts.map +1 -1
- package/dist/runtime/ralph/orchestrator.js +2 -1
- package/dist/runtime/ralph/orchestrator.js.map +1 -1
- package/dist/setup/cli/limits_state.d.ts.map +1 -1
- package/dist/setup/cli/limits_state.js +6 -40
- package/dist/setup/cli/limits_state.js.map +1 -1
- package/dist/setup/cli/pack_walk.d.ts +32 -0
- package/dist/setup/cli/pack_walk.d.ts.map +1 -0
- package/dist/setup/cli/pack_walk.js +76 -0
- package/dist/setup/cli/pack_walk.js.map +1 -0
- package/dist/setup/cli/permissions_state.d.ts.map +1 -1
- package/dist/setup/cli/permissions_state.js +6 -37
- package/dist/setup/cli/permissions_state.js.map +1 -1
- package/dist/setup/cli/triggers_state.d.ts.map +1 -1
- package/dist/setup/cli/triggers_state.js +3 -29
- package/dist/setup/cli/triggers_state.js.map +1 -1
- package/dist/workgraph/events.d.ts.map +1 -1
- package/dist/workgraph/events.js +10 -0
- package/dist/workgraph/events.js.map +1 -1
- package/dist/workgraph/store.d.ts.map +1 -1
- package/dist/workgraph/store.js +5 -0
- package/dist/workgraph/store.js.map +1 -1
- package/dist/workgraph/types.d.ts +2 -1
- package/dist/workgraph/types.d.ts.map +1 -1
- package/docs/ARCHITECTURE.md +268 -0
- package/package.json +5 -3
- package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +13 -17
- package/dist/anti-drift/evaluator.d.ts +0 -88
- package/dist/anti-drift/evaluator.d.ts.map +0 -1
- package/dist/anti-drift/evaluator.js +0 -417
- package/dist/anti-drift/evaluator.js.map +0 -1
- package/dist/anti-drift/evaluator.test.js +0 -78
- package/dist/anti-drift/rules.d.ts +0 -80
- package/dist/anti-drift/rules.d.ts.map +0 -1
- package/dist/anti-drift/rules.js +0 -368
- package/dist/anti-drift/rules.js.map +0 -1
- package/dist/anti-drift/rules.test.js +0 -213
- package/dist/anti-drift/state.d.ts +0 -107
- package/dist/anti-drift/state.d.ts.map +0 -1
- package/dist/anti-drift/state.js +0 -177
- package/dist/anti-drift/state.js.map +0 -1
- package/dist/anti-drift/state.test.js +0 -120
- package/dist/chat/adapters/discord.d.ts +0 -41
- package/dist/chat/adapters/discord.d.ts.map +0 -1
- package/dist/chat/adapters/discord.js +0 -176
- package/dist/chat/adapters/discord.js.map +0 -1
- package/dist/chat/adapters/discord.test.js +0 -25
- package/dist/chat/adapters/slack.d.ts +0 -43
- package/dist/chat/adapters/slack.d.ts.map +0 -1
- package/dist/chat/adapters/slack.js +0 -172
- package/dist/chat/adapters/slack.js.map +0 -1
- package/dist/chat/adapters/slack.test.js +0 -30
- package/dist/chat/adapters/telegram.d.ts +0 -148
- package/dist/chat/adapters/telegram.d.ts.map +0 -1
- package/dist/chat/adapters/telegram.js +0 -498
- package/dist/chat/adapters/telegram.js.map +0 -1
- package/dist/chat/adapters/telegram.test.js +0 -94
- package/dist/chat/config.d.ts +0 -98
- package/dist/chat/config.d.ts.map +0 -1
- package/dist/chat/config.js +0 -185
- package/dist/chat/config.js.map +0 -1
- package/dist/chat/daemon/active-project.d.ts +0 -17
- package/dist/chat/daemon/active-project.d.ts.map +0 -1
- package/dist/chat/daemon/active-project.js +0 -23
- package/dist/chat/daemon/active-project.js.map +0 -1
- package/dist/chat/daemon/autospawn.d.ts +0 -40
- package/dist/chat/daemon/autospawn.d.ts.map +0 -1
- package/dist/chat/daemon/autospawn.js +0 -129
- package/dist/chat/daemon/autospawn.js.map +0 -1
- package/dist/chat/daemon/autospawn.test.js +0 -112
- package/dist/chat/daemon/cli.d.ts +0 -18
- package/dist/chat/daemon/cli.d.ts.map +0 -1
- package/dist/chat/daemon/cli.js +0 -71
- package/dist/chat/daemon/cli.js.map +0 -1
- package/dist/chat/daemon/collisions.js +0 -384
- package/dist/chat/daemon/health-check.d.ts +0 -69
- package/dist/chat/daemon/health-check.d.ts.map +0 -1
- package/dist/chat/daemon/health-check.js +0 -112
- package/dist/chat/daemon/health-check.js.map +0 -1
- package/dist/chat/daemon/inbox-read.d.ts +0 -35
- package/dist/chat/daemon/inbox-read.d.ts.map +0 -1
- package/dist/chat/daemon/inbox-read.js +0 -75
- package/dist/chat/daemon/inbox-read.js.map +0 -1
- package/dist/chat/daemon/inbox-read.test.js +0 -97
- package/dist/chat/daemon/inbox.d.ts +0 -63
- package/dist/chat/daemon/inbox.d.ts.map +0 -1
- package/dist/chat/daemon/inbox.js +0 -56
- package/dist/chat/daemon/inbox.js.map +0 -1
- package/dist/chat/daemon/inbox.test.js +0 -110
- package/dist/chat/daemon/lifecycle.d.ts +0 -71
- package/dist/chat/daemon/lifecycle.d.ts.map +0 -1
- package/dist/chat/daemon/lifecycle.js +0 -221
- package/dist/chat/daemon/lifecycle.js.map +0 -1
- package/dist/chat/daemon/lifecycle.test.js +0 -163
- package/dist/chat/daemon/protocol.d.ts +0 -107
- package/dist/chat/daemon/protocol.d.ts.map +0 -1
- package/dist/chat/daemon/protocol.js +0 -54
- package/dist/chat/daemon/protocol.js.map +0 -1
- package/dist/chat/daemon/routing.d.ts +0 -140
- package/dist/chat/daemon/routing.d.ts.map +0 -1
- package/dist/chat/daemon/routing.js +0 -198
- package/dist/chat/daemon/routing.js.map +0 -1
- package/dist/chat/daemon/routing.test.js +0 -259
- package/dist/chat/daemon/rpc-client.d.ts +0 -45
- package/dist/chat/daemon/rpc-client.d.ts.map +0 -1
- package/dist/chat/daemon/rpc-client.js +0 -133
- package/dist/chat/daemon/rpc-client.js.map +0 -1
- package/dist/chat/daemon/rpc-server.d.ts +0 -39
- package/dist/chat/daemon/rpc-server.d.ts.map +0 -1
- package/dist/chat/daemon/rpc-server.js +0 -385
- package/dist/chat/daemon/rpc-server.js.map +0 -1
- package/dist/chat/daemon/rpc.test.js +0 -177
- package/dist/chat/daemon/subscribers.js +0 -257
- package/dist/chat/daemon/worker.d.ts +0 -27
- package/dist/chat/daemon/worker.d.ts.map +0 -1
- package/dist/chat/daemon/worker.js +0 -313
- package/dist/chat/daemon/worker.js.map +0 -1
- package/dist/chat/daemon/workspace-topic.js +0 -324
- package/dist/chat/env-token.d.ts +0 -60
- package/dist/chat/env-token.d.ts.map +0 -1
- package/dist/chat/env-token.js +0 -137
- package/dist/chat/env-token.js.map +0 -1
- package/dist/chat/env-token.test.js +0 -160
- package/dist/chat/factory.d.ts +0 -30
- package/dist/chat/factory.d.ts.map +0 -1
- package/dist/chat/factory.js +0 -50
- package/dist/chat/factory.js.map +0 -1
- package/dist/chat/factory.test.js +0 -55
- package/dist/chat/gateway.d.ts +0 -176
- package/dist/chat/gateway.d.ts.map +0 -1
- package/dist/chat/gateway.js +0 -146
- package/dist/chat/gateway.js.map +0 -1
- package/dist/chat/gateway.test.js +0 -192
- package/dist/claude-md.d.ts +0 -39
- package/dist/claude-md.d.ts.map +0 -1
- package/dist/claude-md.js +0 -113
- package/dist/claude-md.js.map +0 -1
- package/dist/claude-md.test.js +0 -91
- package/dist/codex/activate.d.ts +0 -66
- package/dist/codex/activate.d.ts.map +0 -1
- package/dist/codex/activate.js +0 -329
- package/dist/codex/activate.js.map +0 -1
- package/dist/codex/activate.test.js +0 -229
- package/dist/codex/bundled-default/bundled-default.test.js +0 -161
- package/dist/codex/cli-publish.test.js +0 -133
- package/dist/codex/cli.d.ts +0 -35
- package/dist/codex/cli.d.ts.map +0 -1
- package/dist/codex/cli.js +0 -554
- package/dist/codex/cli.js.map +0 -1
- package/dist/codex/cli.test.js +0 -277
- package/dist/codex/import-skill-md.d.ts +0 -53
- package/dist/codex/import-skill-md.d.ts.map +0 -1
- package/dist/codex/import-skill-md.js +0 -236
- package/dist/codex/import-skill-md.js.map +0 -1
- package/dist/codex/import-skill-md.test.js +0 -225
- package/dist/codex/loader.d.ts +0 -27
- package/dist/codex/loader.d.ts.map +0 -1
- package/dist/codex/loader.js +0 -86
- package/dist/codex/loader.js.map +0 -1
- package/dist/codex/loader.test.js +0 -75
- package/dist/codex/parse.d.ts +0 -28
- package/dist/codex/parse.d.ts.map +0 -1
- package/dist/codex/parse.js +0 -309
- package/dist/codex/parse.js.map +0 -1
- package/dist/codex/parse.test.js +0 -241
- package/dist/codex/store.d.ts +0 -87
- package/dist/codex/store.d.ts.map +0 -1
- package/dist/codex/store.js +0 -205
- package/dist/codex/store.js.map +0 -1
- package/dist/codex/store.test.js +0 -242
- package/dist/codex/types.d.ts +0 -398
- package/dist/codex/types.d.ts.map +0 -1
- package/dist/codex/types.js +0 -21
- package/dist/codex/types.js.map +0 -1
- package/dist/config.d.ts +0 -53
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -202
- package/dist/config.js.map +0 -1
- package/dist/config.test.js +0 -117
- package/dist/engine/cli.d.ts +0 -14
- package/dist/engine/cli.d.ts.map +0 -1
- package/dist/engine/cli.js +0 -171
- package/dist/engine/cli.js.map +0 -1
- package/dist/engine/client.d.ts +0 -219
- package/dist/engine/client.d.ts.map +0 -1
- package/dist/engine/client.js +0 -312
- package/dist/engine/client.js.map +0 -1
- package/dist/engine/config.d.ts +0 -62
- package/dist/engine/config.d.ts.map +0 -1
- package/dist/engine/config.js +0 -223
- package/dist/engine/config.js.map +0 -1
- package/dist/engine/index.d.ts +0 -17
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js +0 -16
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/resolver.d.ts +0 -62
- package/dist/engine/resolver.d.ts.map +0 -1
- package/dist/engine/resolver.js +0 -103
- package/dist/engine/resolver.js.map +0 -1
- package/dist/engine/singleton.d.ts +0 -95
- package/dist/engine/singleton.d.ts.map +0 -1
- package/dist/engine/singleton.js +0 -325
- package/dist/engine/singleton.js.map +0 -1
- package/dist/engine/types.d.ts +0 -402
- package/dist/engine/types.d.ts.map +0 -1
- package/dist/engine/types.js +0 -22
- package/dist/engine/types.js.map +0 -1
- package/dist/engine-binary-resolver.js +0 -110
- package/dist/engine-binary-resolver.test.js +0 -61
- package/dist/engine-cli.js +0 -60
- package/dist/engine-client.js +0 -301
- package/dist/engine-client.test.js +0 -118
- package/dist/functions/chain_state.d.ts +0 -51
- package/dist/functions/chain_state.d.ts.map +0 -1
- package/dist/functions/chain_state.js +0 -59
- package/dist/functions/chain_state.js.map +0 -1
- package/dist/hooks/drift-catalog.d.ts +0 -68
- package/dist/hooks/drift-catalog.d.ts.map +0 -1
- package/dist/hooks/drift-catalog.js +0 -184
- package/dist/hooks/drift-catalog.js.map +0 -1
- package/dist/hooks/drift-catalog.test.js +0 -154
- package/dist/hooks/drift-patterns.d.ts +0 -110
- package/dist/hooks/drift-patterns.d.ts.map +0 -1
- package/dist/hooks/drift-patterns.js +0 -289
- package/dist/hooks/drift-patterns.js.map +0 -1
- package/dist/hooks/drift-patterns.test.js +0 -325
- package/dist/hooks/engine-vocab-gate.d.ts +0 -108
- package/dist/hooks/engine-vocab-gate.d.ts.map +0 -1
- package/dist/hooks/engine-vocab-gate.js +0 -225
- package/dist/hooks/engine-vocab-gate.js.map +0 -1
- package/dist/hooks/engine-vocab-gate.test.js +0 -170
- package/dist/hooks/heartbeat.d.ts +0 -107
- package/dist/hooks/heartbeat.d.ts.map +0 -1
- package/dist/hooks/heartbeat.js +0 -316
- package/dist/hooks/heartbeat.js.map +0 -1
- package/dist/hooks/heartbeat.test.js +0 -393
- package/dist/hooks/honesty-ledger-session-scope.test.js +0 -100
- package/dist/hooks/honesty-ledger.d.ts +0 -123
- package/dist/hooks/honesty-ledger.d.ts.map +0 -1
- package/dist/hooks/honesty-ledger.js +0 -226
- package/dist/hooks/honesty-ledger.js.map +0 -1
- package/dist/hooks/honesty-ledger.test.js +0 -466
- package/dist/hooks/inline-report-check.d.ts +0 -63
- package/dist/hooks/inline-report-check.d.ts.map +0 -1
- package/dist/hooks/inline-report-check.js +0 -88
- package/dist/hooks/inline-report-check.js.map +0 -1
- package/dist/hooks/inline-report-check.test.js +0 -96
- package/dist/hooks/pre-tool-use.d.ts +0 -62
- package/dist/hooks/pre-tool-use.d.ts.map +0 -1
- package/dist/hooks/pre-tool-use.js +0 -342
- package/dist/hooks/pre-tool-use.js.map +0 -1
- package/dist/hooks/pre-tool-use.test.js +0 -134
- package/dist/hooks/session-end.d.ts +0 -15
- package/dist/hooks/session-end.d.ts.map +0 -1
- package/dist/hooks/session-end.js +0 -60
- package/dist/hooks/session-end.js.map +0 -1
- package/dist/hooks/session-end.test.js +0 -52
- package/dist/hooks/stop.d.ts +0 -35
- package/dist/hooks/stop.d.ts.map +0 -1
- package/dist/hooks/stop.js +0 -136
- package/dist/hooks/stop.js.map +0 -1
- package/dist/hooks/transcript-active-task.test.js +0 -342
- package/dist/hooks/transcript.d.ts +0 -26
- package/dist/hooks/transcript.d.ts.map +0 -1
- package/dist/hooks/transcript.js +0 -266
- package/dist/hooks/transcript.js.map +0 -1
- package/dist/hooks/transcript.test.js +0 -103
- package/dist/hooks/user-prompt-submit.d.ts +0 -74
- package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
- package/dist/hooks/user-prompt-submit.js +0 -256
- package/dist/hooks/user-prompt-submit.js.map +0 -1
- package/dist/hooks/user-prompt-submit.test.js +0 -118
- package/dist/hooks/versioning-gate.d.ts +0 -101
- package/dist/hooks/versioning-gate.d.ts.map +0 -1
- package/dist/hooks/versioning-gate.js +0 -245
- package/dist/hooks/versioning-gate.js.map +0 -1
- package/dist/hooks/versioning-gate.test.js +0 -368
- package/dist/hooks/workflow-gate.d.ts +0 -64
- package/dist/hooks/workflow-gate.d.ts.map +0 -1
- package/dist/hooks/workflow-gate.js +0 -152
- package/dist/hooks/workflow-gate.js.map +0 -1
- package/dist/hooks/workflow-gate.test.js +0 -197
- package/dist/hooks-cli.d.ts +0 -25
- package/dist/hooks-cli.d.ts.map +0 -1
- package/dist/hooks-cli.js +0 -286
- package/dist/hooks-cli.js.map +0 -1
- package/dist/hooks-cli.test.js +0 -148
- package/dist/origin.d.ts +0 -16
- package/dist/origin.d.ts.map +0 -1
- package/dist/origin.js +0 -92
- package/dist/origin.js.map +0 -1
- package/dist/packs/seed_lessons_ingest.d.ts +0 -30
- package/dist/packs/seed_lessons_ingest.d.ts.map +0 -1
- package/dist/packs/seed_lessons_ingest.js +0 -107
- package/dist/packs/seed_lessons_ingest.js.map +0 -1
- package/dist/project-cli.d.ts +0 -7
- package/dist/project-cli.d.ts.map +0 -1
- package/dist/project-cli.js +0 -145
- package/dist/project-cli.js.map +0 -1
- package/dist/project.d.ts +0 -127
- package/dist/project.d.ts.map +0 -1
- package/dist/project.js +0 -281
- package/dist/project.js.map +0 -1
- package/dist/project.test.js +0 -287
- package/dist/rag/backends/loop_engine.d.ts +0 -61
- package/dist/rag/backends/loop_engine.d.ts.map +0 -1
- package/dist/rag/backends/loop_engine.js +0 -160
- package/dist/rag/backends/loop_engine.js.map +0 -1
- package/dist/recall.d.ts +0 -82
- package/dist/recall.d.ts.map +0 -1
- package/dist/recall.js +0 -81
- package/dist/recall.js.map +0 -1
- package/dist/runtime/agent_bridge/autospawn.d.ts +0 -131
- package/dist/runtime/agent_bridge/autospawn.d.ts.map +0 -1
- package/dist/runtime/agent_bridge/autospawn.js +0 -251
- package/dist/runtime/agent_bridge/autospawn.js.map +0 -1
- package/dist/runtime/chain_state.d.ts +0 -124
- package/dist/runtime/chain_state.d.ts.map +0 -1
- package/dist/runtime/chain_state.js +0 -189
- package/dist/runtime/chain_state.js.map +0 -1
- package/dist/runtime/hooks/permission_decision.d.ts +0 -34
- package/dist/runtime/hooks/permission_decision.d.ts.map +0 -1
- package/dist/runtime/hooks/permission_decision.js +0 -39
- package/dist/runtime/hooks/permission_decision.js.map +0 -1
- package/dist/runtime/workflow_fsm.d.ts +0 -21
- package/dist/runtime/workflow_fsm.d.ts.map +0 -1
- package/dist/runtime/workflow_fsm.js +0 -25
- package/dist/runtime/workflow_fsm.js.map +0 -1
- package/dist/runtime/workflow_map.d.ts +0 -26
- package/dist/runtime/workflow_map.d.ts.map +0 -1
- package/dist/runtime/workflow_map.js +0 -38
- package/dist/runtime/workflow_map.js.map +0 -1
- package/dist/scope.d.ts +0 -48
- package/dist/scope.d.ts.map +0 -1
- package/dist/scope.js +0 -111
- package/dist/scope.js.map +0 -1
- package/dist/setup/cli/topic_create_step.d.ts +0 -84
- package/dist/setup/cli/topic_create_step.d.ts.map +0 -1
- package/dist/setup/cli/topic_create_step.js +0 -213
- package/dist/setup/cli/topic_create_step.js.map +0 -1
- package/dist/system-export.d.ts +0 -65
- package/dist/system-export.d.ts.map +0 -1
- package/dist/system-export.js +0 -194
- package/dist/system-export.js.map +0 -1
- package/dist/utterance/classifier.d.ts +0 -53
- package/dist/utterance/classifier.d.ts.map +0 -1
- package/dist/utterance/classifier.js +0 -184
- package/dist/utterance/classifier.js.map +0 -1
- package/dist/utterance/classifier.test.js +0 -147
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"topic_create_step.js","sourceRoot":"","sources":["../../../src/setup/cli/topic_create_step.ts"],"names":[],"mappings":"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"}
|
package/dist/system-export.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `opensquid export / import` — entire ~/.opensquid/ state bundle.
|
|
3
|
-
*
|
|
4
|
-
* Used to back up everything the engine writes (codexes, lessons,
|
|
5
|
-
* memories with .vec sidecars, hooks state under sessions/, project
|
|
6
|
-
* ID cards, engine config) into a single portable archive. Re-import
|
|
7
|
-
* on a fresh machine restores identical state.
|
|
8
|
-
*
|
|
9
|
-
* Format: tar.gz via system `tar` (bsdtar on macOS / Windows 10+,
|
|
10
|
-
* GNU tar on Linux — all support `-czf` / `-xzf`). Reasoning: zero
|
|
11
|
-
* new dependency, deterministic byte layout, easy to inspect via
|
|
12
|
-
* `tar tzf`. Encryption deferred — pass through gpg externally for
|
|
13
|
-
* now (`gpg -c <archive>`).
|
|
14
|
-
*
|
|
15
|
-
* Round-trip semantics:
|
|
16
|
-
* - export writes tar.gz containing the entire ~/.opensquid/ tree
|
|
17
|
-
* relative to $HOME so paths remain portable across machines
|
|
18
|
-
* - import accepts --merge (default — extracts on top of existing
|
|
19
|
-
* ~/.opensquid/, last-write-wins per file) or --replace (wipe
|
|
20
|
-
* ~/.opensquid/ first then extract). Vector index .vec sidecars
|
|
21
|
-
* carry through; engine rehydrates the in-memory HNSW on next
|
|
22
|
-
* spawn from those sidecars.
|
|
23
|
-
*
|
|
24
|
-
* Failure modes:
|
|
25
|
-
* - missing tar binary → throw with install-tar hint
|
|
26
|
-
* - existing output path → refuse without --force
|
|
27
|
-
* - tar exit non-zero → propagate stderr
|
|
28
|
-
* - --replace on non-empty ~/.opensquid/ + missing input archive → no
|
|
29
|
-
* data loss because we extract to a tmp dir first then atomic rename
|
|
30
|
-
*/
|
|
31
|
-
export declare class SystemExportError extends Error {
|
|
32
|
-
readonly hint?: string | undefined;
|
|
33
|
-
constructor(message: string, hint?: string | undefined);
|
|
34
|
-
}
|
|
35
|
-
export interface ExportOptions {
|
|
36
|
-
/** Output archive path. Defaults to `./opensquid-<timestamp>.tar.gz`. */
|
|
37
|
-
output?: string;
|
|
38
|
-
/** Overwrite existing output path. */
|
|
39
|
-
force?: boolean;
|
|
40
|
-
/** Override the source data root (default: `LOOP_HOME` or `~/.opensquid/`). */
|
|
41
|
-
dataRoot?: string;
|
|
42
|
-
}
|
|
43
|
-
export interface ExportResult {
|
|
44
|
-
output: string;
|
|
45
|
-
size_bytes: number;
|
|
46
|
-
}
|
|
47
|
-
export declare function exportSystem(opts?: ExportOptions): Promise<ExportResult>;
|
|
48
|
-
export interface ImportOptions {
|
|
49
|
-
/** Source archive path. */
|
|
50
|
-
input: string;
|
|
51
|
-
/**
|
|
52
|
-
* `merge` (default): extract on top of existing data root, last-write
|
|
53
|
-
* -wins per file. `replace`: wipe data root first then extract.
|
|
54
|
-
*/
|
|
55
|
-
mode?: "merge" | "replace";
|
|
56
|
-
/** Override the destination data root. */
|
|
57
|
-
dataRoot?: string;
|
|
58
|
-
}
|
|
59
|
-
export interface ImportResult {
|
|
60
|
-
input: string;
|
|
61
|
-
data_root: string;
|
|
62
|
-
mode: "merge" | "replace";
|
|
63
|
-
}
|
|
64
|
-
export declare function importSystem(opts: ImportOptions): Promise<ImportResult>;
|
|
65
|
-
//# sourceMappingURL=system-export.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system-export.d.ts","sourceRoot":"","sources":["../src.legacy/system-export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAOH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAaD,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+ClF;AAED,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA0D7E"}
|
package/dist/system-export.js
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `opensquid export / import` — entire ~/.opensquid/ state bundle.
|
|
3
|
-
*
|
|
4
|
-
* Used to back up everything the engine writes (codexes, lessons,
|
|
5
|
-
* memories with .vec sidecars, hooks state under sessions/, project
|
|
6
|
-
* ID cards, engine config) into a single portable archive. Re-import
|
|
7
|
-
* on a fresh machine restores identical state.
|
|
8
|
-
*
|
|
9
|
-
* Format: tar.gz via system `tar` (bsdtar on macOS / Windows 10+,
|
|
10
|
-
* GNU tar on Linux — all support `-czf` / `-xzf`). Reasoning: zero
|
|
11
|
-
* new dependency, deterministic byte layout, easy to inspect via
|
|
12
|
-
* `tar tzf`. Encryption deferred — pass through gpg externally for
|
|
13
|
-
* now (`gpg -c <archive>`).
|
|
14
|
-
*
|
|
15
|
-
* Round-trip semantics:
|
|
16
|
-
* - export writes tar.gz containing the entire ~/.opensquid/ tree
|
|
17
|
-
* relative to $HOME so paths remain portable across machines
|
|
18
|
-
* - import accepts --merge (default — extracts on top of existing
|
|
19
|
-
* ~/.opensquid/, last-write-wins per file) or --replace (wipe
|
|
20
|
-
* ~/.opensquid/ first then extract). Vector index .vec sidecars
|
|
21
|
-
* carry through; engine rehydrates the in-memory HNSW on next
|
|
22
|
-
* spawn from those sidecars.
|
|
23
|
-
*
|
|
24
|
-
* Failure modes:
|
|
25
|
-
* - missing tar binary → throw with install-tar hint
|
|
26
|
-
* - existing output path → refuse without --force
|
|
27
|
-
* - tar exit non-zero → propagate stderr
|
|
28
|
-
* - --replace on non-empty ~/.opensquid/ + missing input archive → no
|
|
29
|
-
* data loss because we extract to a tmp dir first then atomic rename
|
|
30
|
-
*/
|
|
31
|
-
import { spawn } from "node:child_process";
|
|
32
|
-
import { promises as fs } from "node:fs";
|
|
33
|
-
import * as os from "node:os";
|
|
34
|
-
import * as path from "node:path";
|
|
35
|
-
export class SystemExportError extends Error {
|
|
36
|
-
hint;
|
|
37
|
-
constructor(message, hint) {
|
|
38
|
-
super(message);
|
|
39
|
-
this.hint = hint;
|
|
40
|
-
this.name = "SystemExportError";
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/** Resolved data root — `LOOP_HOME` env override, else `~/.opensquid/`. */
|
|
44
|
-
function dataRoot() {
|
|
45
|
-
return process.env.LOOP_HOME ?? path.join(os.homedir(), ".opensquid");
|
|
46
|
-
}
|
|
47
|
-
/** Default output filename for `export` — timestamped under cwd. */
|
|
48
|
-
function defaultOutputPath() {
|
|
49
|
-
const ts = new Date().toISOString().replace(/[:.]/g, "-").replace(/T/g, "_");
|
|
50
|
-
return path.resolve(`opensquid-${ts}.tar.gz`);
|
|
51
|
-
}
|
|
52
|
-
export async function exportSystem(opts = {}) {
|
|
53
|
-
const root = opts.dataRoot ?? dataRoot();
|
|
54
|
-
const output = opts.output ? path.resolve(opts.output) : defaultOutputPath();
|
|
55
|
-
// Verify the data root exists.
|
|
56
|
-
try {
|
|
57
|
-
const stat = await fs.stat(root);
|
|
58
|
-
if (!stat.isDirectory()) {
|
|
59
|
-
throw new SystemExportError(`data root is not a directory: ${root}`, "set LOOP_HOME or pass --root to override");
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
if (err instanceof SystemExportError)
|
|
64
|
-
throw err;
|
|
65
|
-
throw new SystemExportError(`data root does not exist: ${root}`, "nothing to export — opensquid hasn't written any state on this machine yet");
|
|
66
|
-
}
|
|
67
|
-
// Refuse to overwrite an existing output unless --force.
|
|
68
|
-
let outputExists = false;
|
|
69
|
-
try {
|
|
70
|
-
await fs.access(output);
|
|
71
|
-
outputExists = true;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
/* doesn't exist, fine */
|
|
75
|
-
}
|
|
76
|
-
if (outputExists && !opts.force) {
|
|
77
|
-
throw new SystemExportError(`output path already exists: ${output}`, "pass --force to overwrite, or pick a different --output");
|
|
78
|
-
}
|
|
79
|
-
// tar -czf <output> -C <parent-of-root> <basename-of-root>
|
|
80
|
-
// Bundling by basename keeps the extracted tree at .opensquid/ on
|
|
81
|
-
// import regardless of what the source machine had as $HOME. The -C
|
|
82
|
-
// flag chdirs before reading so the archive doesn't carry absolute
|
|
83
|
-
// paths.
|
|
84
|
-
const parent = path.dirname(root);
|
|
85
|
-
const base = path.basename(root);
|
|
86
|
-
await runTar(["-czf", output, "-C", parent, base]);
|
|
87
|
-
const stat = await fs.stat(output);
|
|
88
|
-
return { output, size_bytes: stat.size };
|
|
89
|
-
}
|
|
90
|
-
export async function importSystem(opts) {
|
|
91
|
-
const root = opts.dataRoot ?? dataRoot();
|
|
92
|
-
const mode = opts.mode ?? "merge";
|
|
93
|
-
const input = path.resolve(opts.input);
|
|
94
|
-
// Verify the input archive exists + is readable.
|
|
95
|
-
try {
|
|
96
|
-
const stat = await fs.stat(input);
|
|
97
|
-
if (!stat.isFile()) {
|
|
98
|
-
throw new SystemExportError(`input is not a file: ${input}`, "pass an opensquid export archive (tar.gz)");
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
if (err instanceof SystemExportError)
|
|
103
|
-
throw err;
|
|
104
|
-
throw new SystemExportError(`input archive does not exist: ${input}`, "check the path");
|
|
105
|
-
}
|
|
106
|
-
// Validate the archive looks like an opensquid export by listing
|
|
107
|
-
// contents and looking for the .opensquid/ root entry.
|
|
108
|
-
const list = await tarList(input);
|
|
109
|
-
const hasRoot = list.some((entry) => entry.startsWith(".opensquid/") || entry === ".opensquid");
|
|
110
|
-
if (!hasRoot) {
|
|
111
|
-
throw new SystemExportError(`input does not look like an opensquid export (no .opensquid/ entry)`, "exports created by `opensquid export` always have a .opensquid/ root");
|
|
112
|
-
}
|
|
113
|
-
// For replace mode: extract to a tmp dir first, then atomic rename
|
|
114
|
-
// over the destination. This way a corrupt input doesn't leave the
|
|
115
|
-
// user with a half-deleted data root.
|
|
116
|
-
if (mode === "replace") {
|
|
117
|
-
const stagingParent = path.join(os.tmpdir(), `opensquid-import-${Date.now()}`);
|
|
118
|
-
await fs.mkdir(stagingParent, { recursive: true });
|
|
119
|
-
try {
|
|
120
|
-
await runTar(["-xzf", input, "-C", stagingParent]);
|
|
121
|
-
const stagedRoot = path.join(stagingParent, path.basename(root));
|
|
122
|
-
// Ensure the staged tree exists.
|
|
123
|
-
await fs.access(stagedRoot);
|
|
124
|
-
// Wipe the destination + atomic-replace.
|
|
125
|
-
await fs.rm(root, { recursive: true, force: true });
|
|
126
|
-
await fs.rename(stagedRoot, root);
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
129
|
-
// Best-effort cleanup of the staging parent (it's empty now if
|
|
130
|
-
// the rename succeeded, but may contain orphans on failure).
|
|
131
|
-
await fs.rm(stagingParent, { recursive: true, force: true }).catch(() => undefined);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
// Merge: extract directly to the destination's parent. tar will
|
|
136
|
-
// create / overwrite files within .opensquid/. Existing files not
|
|
137
|
-
// in the archive are preserved. Directory must exist.
|
|
138
|
-
await fs.mkdir(path.dirname(root), { recursive: true });
|
|
139
|
-
await runTar(["-xzf", input, "-C", path.dirname(root)]);
|
|
140
|
-
}
|
|
141
|
-
return { input, data_root: root, mode };
|
|
142
|
-
}
|
|
143
|
-
// ---------------------------------------------------------------------
|
|
144
|
-
// tar helpers
|
|
145
|
-
// ---------------------------------------------------------------------
|
|
146
|
-
function runTar(args) {
|
|
147
|
-
return new Promise((resolve, reject) => {
|
|
148
|
-
const child = spawn("tar", args, { stdio: ["ignore", "pipe", "pipe"] });
|
|
149
|
-
let stderr = "";
|
|
150
|
-
child.stderr.on("data", (chunk) => {
|
|
151
|
-
stderr += chunk.toString();
|
|
152
|
-
});
|
|
153
|
-
child.on("error", (err) => {
|
|
154
|
-
if (err.code === "ENOENT") {
|
|
155
|
-
reject(new SystemExportError("tar binary not found on PATH", "install tar (preinstalled on macOS / Linux; Windows 10+ ships bsdtar)"));
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
reject(err);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
child.on("exit", (code) => {
|
|
162
|
-
if (code === 0)
|
|
163
|
-
resolve();
|
|
164
|
-
else
|
|
165
|
-
reject(new SystemExportError(`tar exited with code ${code}`, stderr.trim() || "no stderr from tar"));
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
async function tarList(input) {
|
|
170
|
-
return new Promise((resolve, reject) => {
|
|
171
|
-
const child = spawn("tar", ["-tzf", input], { stdio: ["ignore", "pipe", "pipe"] });
|
|
172
|
-
let stdout = "";
|
|
173
|
-
let stderr = "";
|
|
174
|
-
child.stdout.on("data", (chunk) => {
|
|
175
|
-
stdout += chunk.toString();
|
|
176
|
-
});
|
|
177
|
-
child.stderr.on("data", (chunk) => {
|
|
178
|
-
stderr += chunk.toString();
|
|
179
|
-
});
|
|
180
|
-
child.on("error", (err) => reject(err));
|
|
181
|
-
child.on("exit", (code) => {
|
|
182
|
-
if (code === 0) {
|
|
183
|
-
resolve(stdout
|
|
184
|
-
.split("\n")
|
|
185
|
-
.map((l) => l.trim())
|
|
186
|
-
.filter(Boolean));
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
reject(new SystemExportError(`tar -tzf exited with code ${code}`, stderr.trim() || "no stderr from tar"));
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=system-export.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system-export.js","sourceRoot":"","sources":["../src.legacy/system-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pattern-based utterance classifier — categorizes user-said text into
|
|
3
|
-
* one of: `fact` / `preference` / `correction` / `workflow_lock` /
|
|
4
|
-
* `none`, with a suggested follow-up action.
|
|
5
|
-
*
|
|
6
|
-
* Pure regex catalog. No LLM call. Fast, deterministic, hand-tunable.
|
|
7
|
-
* The full LLM-driven Stop-hook auto-classifier is task #112; this
|
|
8
|
-
* tool is agent-invoked per the CLAUDE.md classify-and-act block.
|
|
9
|
-
*
|
|
10
|
-
* Output is structured guidance, not an action. The MCP tool returns
|
|
11
|
-
* { kind, suggested_action, matched, confidence }; the agent then calls
|
|
12
|
-
* the appropriate downstream tool (memorize, remember, update_memory)
|
|
13
|
-
* itself.
|
|
14
|
-
*/
|
|
15
|
-
export type UtteranceKind = "fact" | "preference" | "correction" | "workflow_lock" | "none";
|
|
16
|
-
export type UtteranceConfidence = "high" | "medium" | "low";
|
|
17
|
-
export interface UtterancePattern {
|
|
18
|
-
/** Stable id (e.g. "preference-always"). */
|
|
19
|
-
id: string;
|
|
20
|
-
/** Category this pattern signals. */
|
|
21
|
-
kind: UtteranceKind;
|
|
22
|
-
/** Regex matched against the utterance text. */
|
|
23
|
-
pattern: string;
|
|
24
|
-
/** Confidence level when this pattern fires. */
|
|
25
|
-
confidence: UtteranceConfidence;
|
|
26
|
-
/** Short explanation surfaced to the agent. */
|
|
27
|
-
reason: string;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Catalog. Ordered by SPECIFICITY — most specific patterns first so the
|
|
31
|
-
* first match wins. Conservative: a miss is "agent classifies based on
|
|
32
|
-
* CLAUDE.md instructions anyway", a false-fire is "spurious memorize/
|
|
33
|
-
* remember call".
|
|
34
|
-
*/
|
|
35
|
-
export declare const UTTERANCE_PATTERNS: UtterancePattern[];
|
|
36
|
-
export interface ClassifyResult {
|
|
37
|
-
kind: UtteranceKind;
|
|
38
|
-
/** Recommended next action for the agent. */
|
|
39
|
-
suggested_action: string;
|
|
40
|
-
/** Pattern id(s) that matched. */
|
|
41
|
-
matched: string[];
|
|
42
|
-
/** Confidence of the strongest hit. */
|
|
43
|
-
confidence: UtteranceConfidence | null;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Classify an utterance. Returns the strongest-confidence match's kind
|
|
47
|
-
* (high > medium > low), all matching pattern ids, and a suggested
|
|
48
|
-
* downstream action.
|
|
49
|
-
*
|
|
50
|
-
* Empty / whitespace input → kind="none".
|
|
51
|
-
*/
|
|
52
|
-
export declare function classifyUtterance(text: string): ClassifyResult;
|
|
53
|
-
//# sourceMappingURL=classifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src.legacy/utterance/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,CAAC;AAE5F,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,UAAU,EAAE,mBAAmB,CAAC;IAChC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAmHhD,CAAC;AAMF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uCAAuC;IACvC,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAsB9D"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pattern-based utterance classifier — categorizes user-said text into
|
|
3
|
-
* one of: `fact` / `preference` / `correction` / `workflow_lock` /
|
|
4
|
-
* `none`, with a suggested follow-up action.
|
|
5
|
-
*
|
|
6
|
-
* Pure regex catalog. No LLM call. Fast, deterministic, hand-tunable.
|
|
7
|
-
* The full LLM-driven Stop-hook auto-classifier is task #112; this
|
|
8
|
-
* tool is agent-invoked per the CLAUDE.md classify-and-act block.
|
|
9
|
-
*
|
|
10
|
-
* Output is structured guidance, not an action. The MCP tool returns
|
|
11
|
-
* { kind, suggested_action, matched, confidence }; the agent then calls
|
|
12
|
-
* the appropriate downstream tool (memorize, remember, update_memory)
|
|
13
|
-
* itself.
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Catalog. Ordered by SPECIFICITY — most specific patterns first so the
|
|
17
|
-
* first match wins. Conservative: a miss is "agent classifies based on
|
|
18
|
-
* CLAUDE.md instructions anyway", a false-fire is "spurious memorize/
|
|
19
|
-
* remember call".
|
|
20
|
-
*/
|
|
21
|
-
export const UTTERANCE_PATTERNS = [
|
|
22
|
-
// -------------------- CORRECTION (unambiguous, high) --------------------
|
|
23
|
-
{
|
|
24
|
-
id: "correction-no-thats-wrong",
|
|
25
|
-
kind: "correction",
|
|
26
|
-
pattern: "\\b(no,?\\s+that'?s\\s+wrong|that'?s\\s+(?:not\\s+)?(?:wrong|incorrect))\\b",
|
|
27
|
-
confidence: "high",
|
|
28
|
-
reason: "explicit correction phrasing",
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
id: "correction-actually",
|
|
32
|
-
kind: "correction",
|
|
33
|
-
pattern: "\\b(actually,?\\s+(?:it\\s+should\\s+be|the\\s+(?:right|correct))\\b)",
|
|
34
|
-
confidence: "high",
|
|
35
|
-
reason: "actually-it-should-be retraction pattern",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
id: "correction-i-meant",
|
|
39
|
-
kind: "correction",
|
|
40
|
-
pattern: "\\b(I\\s+(?:meant|misspoke)|let me correct that)\\b",
|
|
41
|
-
confidence: "medium",
|
|
42
|
-
reason: "self-correction pattern",
|
|
43
|
-
},
|
|
44
|
-
// -------------------- WORKFLOW_LOCK (specific, high) --------------------
|
|
45
|
-
{
|
|
46
|
-
id: "workflow-the-workflow-is",
|
|
47
|
-
kind: "workflow_lock",
|
|
48
|
-
pattern: "\\bthe\\s+workflow\\s+is\\b",
|
|
49
|
-
confidence: "high",
|
|
50
|
-
reason: "explicit workflow declaration",
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
id: "workflow-pre-research-first",
|
|
54
|
-
kind: "workflow_lock",
|
|
55
|
-
pattern: "\\b(always|never)\\s+(pre-?research|audit|test|build)\\s+(first|before|after)\\b",
|
|
56
|
-
confidence: "high",
|
|
57
|
-
reason: "phase-ordering directive",
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
id: "workflow-no-hedges",
|
|
61
|
-
kind: "workflow_lock",
|
|
62
|
-
pattern: "\\bno\\s+(hedges|later\\s+hedges|skip(?:ping)?\\s+phases)\\b",
|
|
63
|
-
confidence: "high",
|
|
64
|
-
reason: "explicit anti-drift directive",
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
id: "workflow-keep-iterating",
|
|
68
|
-
kind: "workflow_lock",
|
|
69
|
-
pattern: "\\bkeep\\s+iterat(?:ing|e)\\s+until\\b",
|
|
70
|
-
confidence: "medium",
|
|
71
|
-
reason: "iteration-discipline directive",
|
|
72
|
-
},
|
|
73
|
-
// -------------------- PREFERENCE (specific, high — narrower than \"always\") --------------------
|
|
74
|
-
{
|
|
75
|
-
id: "preference-i-prefer",
|
|
76
|
-
kind: "preference",
|
|
77
|
-
pattern: "\\bI\\s+prefer\\s+",
|
|
78
|
-
confidence: "high",
|
|
79
|
-
reason: "explicit preference",
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
id: "preference-always-i",
|
|
83
|
-
kind: "preference",
|
|
84
|
-
// "always [verb]" attached to first-person (I always, we always)
|
|
85
|
-
pattern: "\\b(?:I|we|you should)\\s+always\\b",
|
|
86
|
-
confidence: "high",
|
|
87
|
-
reason: "first-person always-directive",
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
id: "preference-always-action",
|
|
91
|
-
kind: "preference",
|
|
92
|
-
// "always [verb]" at sentence start — e.g. "Always run X" or "always X before Y"
|
|
93
|
-
pattern: "(?:^|\\.\\s+)always\\s+\\w+",
|
|
94
|
-
confidence: "medium",
|
|
95
|
-
reason: "sentence-leading always-directive",
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
id: "preference-never",
|
|
99
|
-
kind: "preference",
|
|
100
|
-
pattern: "\\b(?:I|we|you should)\\s+never\\b|(?:^|\\.\\s+)never\\s+\\w+",
|
|
101
|
-
confidence: "high",
|
|
102
|
-
reason: "negative directive",
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
id: "preference-dont",
|
|
106
|
-
kind: "preference",
|
|
107
|
-
pattern: "(?:^|\\.\\s+)don'?t\\s+\\w+",
|
|
108
|
-
confidence: "medium",
|
|
109
|
-
reason: "sentence-leading prohibition",
|
|
110
|
-
},
|
|
111
|
-
// -------------------- FACT (broadest, conservative) --------------------
|
|
112
|
-
{
|
|
113
|
-
id: "fact-i-use",
|
|
114
|
-
kind: "fact",
|
|
115
|
-
pattern: "\\bI\\s+use\\s+\\w+",
|
|
116
|
-
confidence: "high",
|
|
117
|
-
reason: "I-use-X declarative",
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
id: "fact-x-is-my",
|
|
121
|
-
kind: "fact",
|
|
122
|
-
pattern: "\\b\\w+\\s+is\\s+my\\s+\\w+",
|
|
123
|
-
confidence: "high",
|
|
124
|
-
reason: "X-is-my-Y identity statement",
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
id: "fact-we-have",
|
|
128
|
-
kind: "fact",
|
|
129
|
-
pattern: "\\b(?:we\\s+have|our\\s+\\w+\\s+(?:is|uses))\\b",
|
|
130
|
-
confidence: "medium",
|
|
131
|
-
reason: "team-attribute statement",
|
|
132
|
-
},
|
|
133
|
-
];
|
|
134
|
-
/**
|
|
135
|
-
* Classify an utterance. Returns the strongest-confidence match's kind
|
|
136
|
-
* (high > medium > low), all matching pattern ids, and a suggested
|
|
137
|
-
* downstream action.
|
|
138
|
-
*
|
|
139
|
-
* Empty / whitespace input → kind="none".
|
|
140
|
-
*/
|
|
141
|
-
export function classifyUtterance(text) {
|
|
142
|
-
if (!text || !text.trim()) {
|
|
143
|
-
return { kind: "none", suggested_action: "", matched: [], confidence: null };
|
|
144
|
-
}
|
|
145
|
-
const matches = [];
|
|
146
|
-
for (const p of UTTERANCE_PATTERNS) {
|
|
147
|
-
try {
|
|
148
|
-
if (new RegExp(p.pattern, "i").test(text))
|
|
149
|
-
matches.push(p);
|
|
150
|
-
}
|
|
151
|
-
catch {
|
|
152
|
-
// bad pattern — skip
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (matches.length === 0) {
|
|
156
|
-
return { kind: "none", suggested_action: "", matched: [], confidence: null };
|
|
157
|
-
}
|
|
158
|
-
const winner = pickStrongest(matches);
|
|
159
|
-
return {
|
|
160
|
-
kind: winner.kind,
|
|
161
|
-
suggested_action: suggestedAction(winner.kind),
|
|
162
|
-
matched: matches.map((m) => m.id),
|
|
163
|
-
confidence: winner.confidence,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
function pickStrongest(matches) {
|
|
167
|
-
const order = { high: 3, medium: 2, low: 1 };
|
|
168
|
-
return matches.reduce((best, p) => (order[p.confidence] > order[best.confidence] ? p : best));
|
|
169
|
-
}
|
|
170
|
-
function suggestedAction(kind) {
|
|
171
|
-
switch (kind) {
|
|
172
|
-
case "fact":
|
|
173
|
-
return "call `memorize` with the fact. Note the memory id in your reply.";
|
|
174
|
-
case "preference":
|
|
175
|
-
return 'call `memorize` AND `remember` to create a lesson candidate. Reply: "Captured as a candidate rule — promote to permanent?"';
|
|
176
|
-
case "workflow_lock":
|
|
177
|
-
return "call `memorize` AND `remember` (workflow rules are high-priority lesson candidates). Offer to promote.";
|
|
178
|
-
case "correction":
|
|
179
|
-
return "call `memorize` with the correction. If it supersedes a specific prior memory you can identify, also call `update_memory`.";
|
|
180
|
-
case "none":
|
|
181
|
-
return "";
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=classifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src.legacy/utterance/classifier.ts"],"names":[],"mappings":"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"}
|