opensquid 0.5.441 → 0.5.449
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/functions/recall_pre_inject.d.ts.map +1 -1
- package/dist/functions/recall_pre_inject.js +12 -0
- package/dist/functions/recall_pre_inject.js.map +1 -1
- package/dist/rag/store_git.d.ts +23 -0
- package/dist/rag/store_git.d.ts.map +1 -0
- package/dist/rag/store_git.js +57 -0
- package/dist/rag/store_git.js.map +1 -0
- 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-end.js +11 -0
- package/dist/runtime/hooks/session-end.js.map +1 -1
- 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/docs/pack-runtime.md +15 -12
- package/docs/skill-grammar-guide.md +4 -4
- 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,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DOG.3 — seed_lessons -> engine.lessonCreate ingest.
|
|
3
|
-
*
|
|
4
|
-
* Wraps the engine's `lesson.create` JSON-RPC (pack-authored variant) so
|
|
5
|
-
* each `SeedLesson` declared in a pack's manifest lands in the engine's
|
|
6
|
-
* lessons table at load time:
|
|
7
|
-
* - `authored_by: 'pack'` + `pack_id` — engine treats pack-authored
|
|
8
|
-
* lessons as eviction-immune (mirrors user-authored behaviour per
|
|
9
|
-
* `feedback_user_authored_lessons_immune`).
|
|
10
|
-
* - `seed_as_promoted: true` — bypasses the pending->promoted gate so
|
|
11
|
-
* seed knowledge is immediately recall-eligible (matches the v1.1
|
|
12
|
-
* pack-author surface in `src/engine/types.ts`).
|
|
13
|
-
* - `external_id: pack-seed:<sha256-24>` — stable across re-ingestion
|
|
14
|
-
* so the engine UPSERTs (`updated: true`) instead of duplicating.
|
|
15
|
-
*
|
|
16
|
-
* Fire-and-forget contract: per-seed failures are COLLECTED, never
|
|
17
|
-
* thrown. `loadPack` invokes this in a `void` context so a missing or
|
|
18
|
-
* down engine NEVER blocks pack load — the seeds simply aren't queryable
|
|
19
|
-
* until the next load with an engine present.
|
|
20
|
-
*
|
|
21
|
-
* Per-seed error isolation: one failing seed does not abort the rest.
|
|
22
|
-
*/
|
|
23
|
-
import { createHash } from 'node:crypto';
|
|
24
|
-
import { readFile } from 'node:fs/promises';
|
|
25
|
-
import { isAbsolute, resolve, sep } from 'node:path';
|
|
26
|
-
/**
|
|
27
|
-
* Ingest `seeds` into the engine. Returns `{ingested, skipped, failed}`:
|
|
28
|
-
* - `ingested`: seeds that the engine accepted as NEW rows
|
|
29
|
-
* (`result.updated === false`)
|
|
30
|
-
* - `skipped`: seeds the engine UPSERTed onto an existing row
|
|
31
|
-
* (`result.updated === true`) — idempotent re-ingest
|
|
32
|
-
* - `failed`: per-seed RPC errors (engine down, validation error,
|
|
33
|
-
* network blip). Never thrown — callers log.
|
|
34
|
-
*/
|
|
35
|
-
export async function ingestSeedLessons(packName, packVersion, seeds, engine, packDir) {
|
|
36
|
-
let ingested = 0;
|
|
37
|
-
let skipped = 0;
|
|
38
|
-
const failed = [];
|
|
39
|
-
for (const seed of seeds) {
|
|
40
|
-
try {
|
|
41
|
-
const body = await resolveSeedBody(seed, packDir);
|
|
42
|
-
const result = await engine.lessonCreate({
|
|
43
|
-
description: seed.title,
|
|
44
|
-
body,
|
|
45
|
-
authored_by: 'pack',
|
|
46
|
-
pack_id: packName,
|
|
47
|
-
external_id: makeExternalId(packName, packVersion, seed.title),
|
|
48
|
-
seed_as_promoted: true,
|
|
49
|
-
});
|
|
50
|
-
if (result.updated)
|
|
51
|
-
skipped += 1;
|
|
52
|
-
else
|
|
53
|
-
ingested += 1;
|
|
54
|
-
}
|
|
55
|
-
catch (e) {
|
|
56
|
-
failed.push({
|
|
57
|
-
title: seed.title,
|
|
58
|
-
error: e instanceof Error ? e.message : String(e),
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return { ingested, skipped, failed };
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Resolve a seed's body: inline `body` wins; otherwise read `body_path` as a
|
|
66
|
-
* file relative to the pack directory. The schema (`SeedLesson` refine)
|
|
67
|
-
* guarantees exactly one is set. body_path is path-traversal-confined to the
|
|
68
|
-
* pack dir — an absolute path or one that escapes the pack root throws (caught
|
|
69
|
-
* per-seed by the caller, isolating one bad seed from the rest). An
|
|
70
|
-
* empty/whitespace-only file throws too (engine requires a non-empty body).
|
|
71
|
-
*/
|
|
72
|
-
async function resolveSeedBody(seed, packDir) {
|
|
73
|
-
if (seed.body !== undefined)
|
|
74
|
-
return seed.body;
|
|
75
|
-
const rel = seed.body_path;
|
|
76
|
-
if (rel === undefined) {
|
|
77
|
-
// Unreachable given the schema XOR refine, but fail loud rather than send
|
|
78
|
-
// an empty body to the engine.
|
|
79
|
-
throw new Error('seed_lesson has neither body nor body_path');
|
|
80
|
-
}
|
|
81
|
-
if (isAbsolute(rel)) {
|
|
82
|
-
throw new Error(`seed_lesson body_path must be pack-relative, got absolute: ${rel}`);
|
|
83
|
-
}
|
|
84
|
-
const root = resolve(packDir);
|
|
85
|
-
const abs = resolve(root, rel);
|
|
86
|
-
if (abs !== root && !abs.startsWith(root + sep)) {
|
|
87
|
-
throw new Error(`seed_lesson body_path escapes the pack dir: ${rel}`);
|
|
88
|
-
}
|
|
89
|
-
const content = (await readFile(abs, 'utf8')).trim();
|
|
90
|
-
if (content.length === 0) {
|
|
91
|
-
throw new Error(`seed_lesson body_path resolved to an empty file: ${rel}`);
|
|
92
|
-
}
|
|
93
|
-
return content;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* sha256-derived external_id for engine UPSERT.
|
|
97
|
-
*
|
|
98
|
-
* Stable across opensquid processes for the same (pack@version + title),
|
|
99
|
-
* collision-resistant under pack-author discipline (no two seeds in one
|
|
100
|
-
* pack share a title). Different packs that happen to use the same title
|
|
101
|
-
* produce distinct external_ids because pack name is part of the input.
|
|
102
|
-
*/
|
|
103
|
-
export function makeExternalId(packName, packVersion, title) {
|
|
104
|
-
const hash = createHash('sha256').update(`${packName}@${packVersion}|${title}`).digest('hex');
|
|
105
|
-
return `pack-seed:${hash.slice(0, 24)}`;
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=seed_lessons_ingest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seed_lessons_ingest.js","sourceRoot":"","sources":["../../src/packs/seed_lessons_ingest.ts"],"names":[],"mappings":"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"}
|
package/dist/project-cli.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare class ProjectCliError extends Error {
|
|
2
|
-
readonly hint?: string | undefined;
|
|
3
|
-
constructor(message: string, hint?: string | undefined);
|
|
4
|
-
}
|
|
5
|
-
export type ProjectCliCmd = "init" | "info" | "list" | "prune";
|
|
6
|
-
export declare function runProjectCli(cmd: ProjectCliCmd, argv: string[]): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=project-cli.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-cli.d.ts","sourceRoot":"","sources":["../src.legacy/project-cli.ts"],"names":[],"mappings":"AA0BA,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AA2HD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D,wBAAsB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrF"}
|
package/dist/project-cli.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `opensquid project <subcommand>` — project identity CLI.
|
|
3
|
-
*
|
|
4
|
-
* Subcommands:
|
|
5
|
-
* init [--id <name>] — create `.opensquid/project.json` at cwd
|
|
6
|
-
* (refuses to overwrite without --force)
|
|
7
|
-
* info — print the resolved project + state
|
|
8
|
-
* list — list registered projects from the global
|
|
9
|
-
* registry
|
|
10
|
-
* prune — sweep registry for entries whose
|
|
11
|
-
* `last_seen_path` no longer exists; mark
|
|
12
|
-
* them as deleted
|
|
13
|
-
*/
|
|
14
|
-
import * as crypto from "node:crypto";
|
|
15
|
-
import * as path from "node:path";
|
|
16
|
-
import { applyResolution, findProjectCard, loadRegistry, pruneDeleted, resolveProject, writeProjectCard, } from "./project.js";
|
|
17
|
-
export class ProjectCliError extends Error {
|
|
18
|
-
hint;
|
|
19
|
-
constructor(message, hint) {
|
|
20
|
-
super(message);
|
|
21
|
-
this.hint = hint;
|
|
22
|
-
this.name = "ProjectCliError";
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function parseFlags(argv) {
|
|
26
|
-
const args = [];
|
|
27
|
-
const opts = {};
|
|
28
|
-
for (let i = 0; i < argv.length; i++) {
|
|
29
|
-
const a = argv[i];
|
|
30
|
-
if (a === "--force") {
|
|
31
|
-
opts.force = true;
|
|
32
|
-
}
|
|
33
|
-
else if (a === "--id" && argv[i + 1]) {
|
|
34
|
-
opts.id = argv[++i];
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
args.push(a);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return { args, opts };
|
|
41
|
-
}
|
|
42
|
-
async function cmdInit(opts) {
|
|
43
|
-
const cwd = process.cwd();
|
|
44
|
-
const existing = await findProjectCard(cwd);
|
|
45
|
-
if (existing && !opts.force) {
|
|
46
|
-
throw new ProjectCliError(`project card already exists at ${existing.cardPath}`, "use --force to overwrite, or run `opensquid project info` to inspect");
|
|
47
|
-
}
|
|
48
|
-
// If `--id` not passed, use the suggested default (git basename or cwd).
|
|
49
|
-
const resolved = await resolveProject(cwd);
|
|
50
|
-
const suggestedId = resolved.kind === "new" ? resolved.suggested_id : (existing?.card.id ?? "project");
|
|
51
|
-
const id = opts.id ?? suggestedId;
|
|
52
|
-
// Build the card directly so we can honor force without going through
|
|
53
|
-
// applyResolution's no-clobber pathway.
|
|
54
|
-
const card = {
|
|
55
|
-
version: 1,
|
|
56
|
-
id,
|
|
57
|
-
uuid: existing?.card.uuid ?? crypto.randomUUID(),
|
|
58
|
-
created_at: existing?.card.created_at ?? new Date().toISOString(),
|
|
59
|
-
};
|
|
60
|
-
await writeProjectCard(cwd, card, { force: !!existing });
|
|
61
|
-
// Register / refresh in the global registry.
|
|
62
|
-
await applyResolution(cwd, await resolveProject(cwd), { autoCreate: false });
|
|
63
|
-
console.log(`[opensquid project init] wrote ${path.join(cwd, ".opensquid", "project.json")}`);
|
|
64
|
-
console.log(` id: ${card.id}`);
|
|
65
|
-
console.log(` uuid: ${card.uuid}`);
|
|
66
|
-
}
|
|
67
|
-
async function cmdInfo() {
|
|
68
|
-
const cwd = process.cwd();
|
|
69
|
-
const resolved = await resolveProject(cwd);
|
|
70
|
-
switch (resolved.kind) {
|
|
71
|
-
case "known": {
|
|
72
|
-
const projectRoot = path.dirname(path.dirname(resolved.cardPath));
|
|
73
|
-
console.log(`[opensquid project info] state: KNOWN`);
|
|
74
|
-
console.log(` id: ${resolved.card.id}`);
|
|
75
|
-
console.log(` uuid: ${resolved.card.uuid}`);
|
|
76
|
-
console.log(` created_at: ${resolved.card.created_at}`);
|
|
77
|
-
console.log(` project root: ${projectRoot}`);
|
|
78
|
-
console.log(` card: ${resolved.cardPath}`);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
case "moved": {
|
|
82
|
-
const projectRoot = path.dirname(path.dirname(resolved.cardPath));
|
|
83
|
-
console.log(`[opensquid project info] state: MOVED`);
|
|
84
|
-
console.log(` id: ${resolved.card.id}`);
|
|
85
|
-
console.log(` uuid: ${resolved.card.uuid}`);
|
|
86
|
-
console.log(` moved from: ${resolved.from_path}`);
|
|
87
|
-
console.log(` now at: ${projectRoot}`);
|
|
88
|
-
console.log(` hint: run \`opensquid project init --force\` or any memorize call`);
|
|
89
|
-
console.log(` to update the registry's last-seen path.`);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
case "new": {
|
|
93
|
-
console.log(`[opensquid project info] state: NEW (no card found)`);
|
|
94
|
-
console.log(` suggested id: ${resolved.suggested_id}`);
|
|
95
|
-
console.log(` hint: run \`opensquid project init [--id NAME]\` to claim this dir`);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async function cmdList() {
|
|
101
|
-
const reg = await loadRegistry();
|
|
102
|
-
const entries = Object.entries(reg.projects);
|
|
103
|
-
if (entries.length === 0) {
|
|
104
|
-
console.log(`[opensquid project list] no projects registered yet`);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
// Stable ordering: active first by last_seen_at desc, then deleted.
|
|
108
|
-
entries.sort(([, a], [, b]) => {
|
|
109
|
-
if (a.status !== b.status)
|
|
110
|
-
return a.status === "active" ? -1 : 1;
|
|
111
|
-
return b.last_seen_at.localeCompare(a.last_seen_at);
|
|
112
|
-
});
|
|
113
|
-
console.log(`[opensquid project list] ${entries.length} registered:`);
|
|
114
|
-
for (const [uuid, entry] of entries) {
|
|
115
|
-
const tag = entry.status === "active" ? " " : "× ";
|
|
116
|
-
console.log(`${tag}${entry.id.padEnd(28)} ${entry.last_seen_path}`);
|
|
117
|
-
console.log(` uuid=${uuid} last_seen=${entry.last_seen_at}`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
async function cmdPrune() {
|
|
121
|
-
const res = await pruneDeleted();
|
|
122
|
-
if (res.swept === 0) {
|
|
123
|
-
console.log(`[opensquid project prune] no stale entries`);
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
console.log(`[opensquid project prune] marked ${res.swept} entr${res.swept === 1 ? "y" : "ies"} as deleted: ${res.removed_ids.join(", ")}`);
|
|
127
|
-
}
|
|
128
|
-
export async function runProjectCli(cmd, argv) {
|
|
129
|
-
const { opts } = parseFlags(argv);
|
|
130
|
-
switch (cmd) {
|
|
131
|
-
case "init":
|
|
132
|
-
await cmdInit(opts);
|
|
133
|
-
return;
|
|
134
|
-
case "info":
|
|
135
|
-
await cmdInfo();
|
|
136
|
-
return;
|
|
137
|
-
case "list":
|
|
138
|
-
await cmdList();
|
|
139
|
-
return;
|
|
140
|
-
case "prune":
|
|
141
|
-
await cmdPrune();
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=project-cli.js.map
|
package/dist/project-cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-cli.js","sourceRoot":"","sources":["../src.legacy/project-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,GAEjB,MAAM,cAAc,CAAC;AAEtB,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAGtB;IAFlB,YACE,OAAe,EACC,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AASD,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAgB;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CACvB,kCAAkC,QAAQ,CAAC,QAAQ,EAAE,EACrD,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,WAAW,GACf,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC;IACrF,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC;IAElC,sEAAsE;IACtE,wCAAwC;IACxC,MAAM,IAAI,GAAgB;QACxB,OAAO,EAAE,CAAC;QACV,EAAE;QACF,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;QAChD,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClE,CAAC;IACF,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,6CAA6C;IAC7C,MAAM,eAAe,CAAC,GAAG,EAAE,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,oEAAoE;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,eAAe,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC;IACjC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CACT,oCAAoC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/H,CAAC;AACJ,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAkB,EAAE,IAAc;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACT,KAAK,MAAM;YACT,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO;QACT,KAAK,MAAM;YACT,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO;QACT,KAAK,OAAO;YACV,MAAM,QAAQ,EAAE,CAAC;YACjB,OAAO;IACX,CAAC;AACH,CAAC"}
|
package/dist/project.d.ts
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Project identity — decouple project scope from filesystem path.
|
|
3
|
-
*
|
|
4
|
-
* Two artifacts work together:
|
|
5
|
-
*
|
|
6
|
-
* 1. **Local ID card** at `<project-root>/.opensquid/project.json` —
|
|
7
|
-
* stable identity that travels with the project across moves /
|
|
8
|
-
* renames. Contains `id` (human-friendly), `uuid` (machine-stable),
|
|
9
|
-
* `created_at`.
|
|
10
|
-
*
|
|
11
|
-
* 2. **Global registry** at `~/.opensquid/projects.json` — index of
|
|
12
|
-
* all known projects by uuid. Tracks `last_seen_path`,
|
|
13
|
-
* `last_seen_at`, `status` (active|deleted) so we can detect
|
|
14
|
-
* moves and prune deletes.
|
|
15
|
-
*
|
|
16
|
-
* State machine on `resolveProject(cwd)`:
|
|
17
|
-
*
|
|
18
|
-
* - card present, registry agrees on path → **known**
|
|
19
|
-
* - card present, registry has different path for this uuid → **moved**
|
|
20
|
-
* (registry's old path may or may not still exist; we update both)
|
|
21
|
-
* - card absent → **new** (caller decides whether to auto-create)
|
|
22
|
-
*
|
|
23
|
-
* `pruneDeleted()` sweeps the registry: for each active entry whose
|
|
24
|
-
* `last_seen_path` no longer exists on disk, flip status to "deleted".
|
|
25
|
-
*/
|
|
26
|
-
export interface ProjectCard {
|
|
27
|
-
/** Schema version; bump when the file shape changes. */
|
|
28
|
-
version: 1;
|
|
29
|
-
/** Human-friendly id (default: git basename of project root). */
|
|
30
|
-
id: string;
|
|
31
|
-
/** Machine-stable uuid that survives moves + id renames. */
|
|
32
|
-
uuid: string;
|
|
33
|
-
/** ISO timestamp the card was first written. */
|
|
34
|
-
created_at: string;
|
|
35
|
-
}
|
|
36
|
-
export type ProjectStatus = "active" | "deleted";
|
|
37
|
-
export interface RegistryEntry {
|
|
38
|
-
id: string;
|
|
39
|
-
last_seen_path: string;
|
|
40
|
-
last_seen_at: string;
|
|
41
|
-
created_at: string;
|
|
42
|
-
status: ProjectStatus;
|
|
43
|
-
}
|
|
44
|
-
export interface Registry {
|
|
45
|
-
version: 1;
|
|
46
|
-
/** Map of uuid → registry entry. */
|
|
47
|
-
projects: Record<string, RegistryEntry>;
|
|
48
|
-
}
|
|
49
|
-
export type ResolvedProject = {
|
|
50
|
-
kind: "known";
|
|
51
|
-
card: ProjectCard;
|
|
52
|
-
cardPath: string;
|
|
53
|
-
} | {
|
|
54
|
-
kind: "moved";
|
|
55
|
-
card: ProjectCard;
|
|
56
|
-
cardPath: string;
|
|
57
|
-
from_path: string;
|
|
58
|
-
} | {
|
|
59
|
-
kind: "new";
|
|
60
|
-
project_root: string | null;
|
|
61
|
-
suggested_id: string;
|
|
62
|
-
};
|
|
63
|
-
/** Path to the registry file. */
|
|
64
|
-
export declare function registryPath(dataRoot?: string): string;
|
|
65
|
-
/** Path the ID card WOULD live at for a given project root. */
|
|
66
|
-
export declare function cardPathForRoot(projectRoot: string): string;
|
|
67
|
-
/**
|
|
68
|
-
* Walk up from `cwd` looking for a `.opensquid/project.json` card.
|
|
69
|
-
* Stops at the filesystem root. Returns the card + the path the
|
|
70
|
-
* card was found at, or null if no card exists in any ancestor.
|
|
71
|
-
*/
|
|
72
|
-
export declare function findProjectCard(cwd: string): Promise<{
|
|
73
|
-
card: ProjectCard;
|
|
74
|
-
cardPath: string;
|
|
75
|
-
} | null>;
|
|
76
|
-
/**
|
|
77
|
-
* Write a project card at `<projectRoot>/.opensquid/project.json`.
|
|
78
|
-
* Refuses to overwrite an existing card unless `force` is set —
|
|
79
|
-
* overwriting is a manual operation, not an accidental one.
|
|
80
|
-
*/
|
|
81
|
-
export declare function writeProjectCard(projectRoot: string, card: ProjectCard, options?: {
|
|
82
|
-
force?: boolean;
|
|
83
|
-
}): Promise<{
|
|
84
|
-
cardPath: string;
|
|
85
|
-
}>;
|
|
86
|
-
export declare function loadRegistry(dataRoot?: string): Promise<Registry>;
|
|
87
|
-
export declare function saveRegistry(reg: Registry, dataRoot?: string): Promise<void>;
|
|
88
|
-
/**
|
|
89
|
-
* Determine the project state for a given cwd.
|
|
90
|
-
*
|
|
91
|
-
* - Walks up from cwd for a card.
|
|
92
|
-
* - Cross-references with the registry.
|
|
93
|
-
* - Returns the state without mutating either file.
|
|
94
|
-
*
|
|
95
|
-
* `applyResolution` is the side-effect step: it updates the registry
|
|
96
|
-
* based on the resolved state (and creates a card for `new` IF the
|
|
97
|
-
* caller asks it to).
|
|
98
|
-
*/
|
|
99
|
-
export declare function resolveProject(cwd: string, options?: {
|
|
100
|
-
dataRoot?: string;
|
|
101
|
-
}): Promise<ResolvedProject>;
|
|
102
|
-
/**
|
|
103
|
-
* Side-effecting companion to `resolveProject`. Updates the registry
|
|
104
|
-
* (creating the card if asked for `new`). Idempotent.
|
|
105
|
-
*
|
|
106
|
-
* - `known`: bump `last_seen_at` only.
|
|
107
|
-
* - `moved`: update `last_seen_path` + `last_seen_at`.
|
|
108
|
-
* - `new`: if `autoCreate` is true, create a card at `cwd` + register
|
|
109
|
-
* it. Otherwise return null.
|
|
110
|
-
*/
|
|
111
|
-
export declare function applyResolution(cwd: string, resolved: ResolvedProject, options?: {
|
|
112
|
-
dataRoot?: string;
|
|
113
|
-
autoCreate?: boolean;
|
|
114
|
-
id?: string;
|
|
115
|
-
}): Promise<ProjectCard | null>;
|
|
116
|
-
/**
|
|
117
|
-
* Mark registry entries as "deleted" when their `last_seen_path` no
|
|
118
|
-
* longer exists on disk. Does NOT actually remove the entry — kept
|
|
119
|
-
* for historical reference and so the user can see what they had.
|
|
120
|
-
*
|
|
121
|
-
* Returns the count of entries that flipped from active → deleted.
|
|
122
|
-
*/
|
|
123
|
-
export declare function pruneDeleted(dataRoot?: string): Promise<{
|
|
124
|
-
swept: number;
|
|
125
|
-
removed_ids: string[];
|
|
126
|
-
}>;
|
|
127
|
-
//# sourceMappingURL=project.d.ts.map
|
package/dist/project.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src.legacy/project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAaH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,OAAO,EAAE,CAAC,CAAC;IACX,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAUN,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAMD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAiBzD;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB/B;AAMD,wBAAsB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAUvE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlF;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,eAAe,CAAC,CAkB1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GACrE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqD7B;AAMD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC,CAiBD"}
|