create-principles-disciple 1.95.0 → 1.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/console/dist/server/config/pd-config-store.js +49 -12
- package/console/dist/server/index.js +4 -3
- package/console/dist/server/models/IntentPageModel.d.ts +36 -2
- package/console/dist/server/models/IntentPageModel.js +213 -11
- package/console/dist/server/routes/intent.d.ts +5 -1
- package/console/dist/server/routes/intent.js +200 -12
- package/console/dist/types.d.ts +1 -0
- package/console/dist/ui/App.js +0 -53
- package/console/dist/ui/api.d.ts +18 -4
- package/console/dist/ui/api.js +38 -5
- package/console/dist/ui/components/layout/app-sidebar.js +12 -12
- package/console/dist/ui/components/ui/badge.d.ts +1 -1
- package/console/dist/ui/i18n/en.json +142 -3
- package/console/dist/ui/i18n/zh-CN.json +142 -3
- package/console/dist/ui/pages/control-center/AgentCard.d.ts +31 -0
- package/console/dist/ui/pages/control-center/AgentCard.js +156 -0
- package/console/dist/ui/pages/control-center/AgentGroup.d.ts +26 -0
- package/console/dist/ui/pages/control-center/AgentGroup.js +38 -0
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +77 -41
- package/console/dist/ui/pages/control-center/WorkflowDiagram.d.ts +17 -0
- package/console/dist/ui/pages/control-center/WorkflowDiagram.js +55 -0
- package/console/dist/ui/pages/intent/IntentOnboarding.d.ts +67 -0
- package/console/dist/ui/pages/intent/IntentOnboarding.js +289 -0
- package/console/dist/ui/pages/intent/IntentPage.js +117 -6
- package/console/dist/ui/utils/agent-metadata.d.ts +58 -0
- package/console/dist/ui/utils/agent-metadata.js +275 -0
- package/console/dist/ui/utils/control-center-helpers.d.ts +19 -0
- package/console/dist/ui/utils/control-center-helpers.js +37 -0
- package/console/dist/ui/utils/validators.d.ts +37 -0
- package/console/dist/ui/utils/validators.js +130 -0
- package/console/dist/web/assets/app.css +360 -3
- package/console/dist/web/assets/app.js +2952 -1143
- package/console/package.json +1 -1
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +27 -35
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +85 -7
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/golden-trace-replay-validator.test.js +70 -0
- package/core/dist/runtime-v2/__tests__/golden-trace-replay-validator.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/golden-trace.test.js +136 -1
- package/core/dist/runtime-v2/__tests__/golden-trace.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.js +211 -0
- package/core/dist/runtime-v2/__tests__/v2-adversarial-cases.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +93 -0
- package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts +11 -0
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js +22 -0
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.d.ts +2 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.js +74 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/rulecode-context-v2-flag.test.js.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.d.ts +2 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.js +246 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/surface-guard-policy.test.js.map +1 -0
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +7 -0
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/index.d.ts +2 -0
- package/core/dist/runtime-v2/feature-flags/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/index.js +2 -0
- package/core/dist/runtime-v2/feature-flags/index.js.map +1 -1
- package/{plugin/dist/core/surface-guard.d.ts → core/dist/runtime-v2/feature-flags/surface-guard-policy.d.ts} +15 -5
- package/core/dist/runtime-v2/feature-flags/surface-guard-policy.d.ts.map +1 -0
- package/{plugin/dist/core/surface-guard.js → core/dist/runtime-v2/feature-flags/surface-guard-policy.js} +14 -2
- package/core/dist/runtime-v2/feature-flags/surface-guard-policy.js.map +1 -0
- package/core/dist/runtime-v2/golden-trace-replay-validator.js +1 -1
- package/core/dist/runtime-v2/golden-trace-replay-validator.js.map +1 -1
- package/core/dist/runtime-v2/golden-trace.d.ts +19 -3
- package/core/dist/runtime-v2/golden-trace.d.ts.map +1 -1
- package/core/dist/runtime-v2/golden-trace.js +2 -0
- package/core/dist/runtime-v2/golden-trace.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +15 -3
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +11 -2
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts +2 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js +88 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc-version.test.js.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js +91 -1
- package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js.map +1 -1
- package/core/dist/runtime-v2/intent/index.d.ts +2 -0
- package/core/dist/runtime-v2/intent/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/intent/index.js +2 -0
- package/core/dist/runtime-v2/intent/index.js.map +1 -1
- package/core/dist/runtime-v2/intent/intent-browser.d.ts +23 -0
- package/core/dist/runtime-v2/intent/intent-browser.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-browser.js +21 -0
- package/core/dist/runtime-v2/intent/intent-browser.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc-version.d.ts +28 -0
- package/core/dist/runtime-v2/intent/intent-doc-version.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc-version.js +21 -0
- package/core/dist/runtime-v2/intent/intent-doc-version.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc.d.ts +17 -1
- package/core/dist/runtime-v2/intent/intent-doc.d.ts.map +1 -1
- package/core/dist/runtime-v2/intent/intent-doc.js +95 -7
- package/core/dist/runtime-v2/intent/intent-doc.js.map +1 -1
- package/core/dist/runtime-v2/intent/intent-hash.d.ts +2 -0
- package/core/dist/runtime-v2/intent/intent-hash.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-hash.js +10 -0
- package/core/dist/runtime-v2/intent/intent-hash.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +41 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +130 -2
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js +228 -0
- package/core/dist/runtime-v2/internalization/__tests__/behavior-example-pack.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +41 -11
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/refiner-sandbox-wrapper.test.js +135 -0
- package/core/dist/runtime-v2/internalization/__tests__/refiner-sandbox-wrapper.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.js +449 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-context-v2.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/adversarial-case.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/adversarial-case.js +24 -0
- package/core/dist/runtime-v2/internalization/adversarial-case.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-output.d.ts +10 -0
- package/core/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-output.js +45 -0
- package/core/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +2 -2
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js +7 -2
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/behavior-example-pack.d.ts +66 -0
- package/core/dist/runtime-v2/internalization/behavior-example-pack.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/behavior-example-pack.js +183 -0
- package/core/dist/runtime-v2/internalization/behavior-example-pack.js.map +1 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.d.ts +8 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-output.js +10 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts +17 -0
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js +118 -24
- package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js +1 -1
- package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js.map +1 -1
- package/core/dist/runtime-v2/internalization/rule-context-v2.d.ts +61 -0
- package/core/dist/runtime-v2/internalization/rule-context-v2.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/rule-context-v2.js +301 -0
- package/core/dist/runtime-v2/internalization/rule-context-v2.js.map +1 -0
- package/core/dist/runtime-v2/internalization/rule-host-contracts.d.ts +9 -0
- package/core/dist/runtime-v2/internalization/rule-host-contracts.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/v2-adversarial-cases.d.ts +55 -0
- package/core/dist/runtime-v2/internalization/v2-adversarial-cases.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/v2-adversarial-cases.js +131 -0
- package/core/dist/runtime-v2/internalization/v2-adversarial-cases.js.map +1 -0
- package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.js +24 -1
- package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.d.ts +2 -0
- package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.js +95 -0
- package/core/dist/runtime-v2/risk/__tests__/risk-calculator-policy.test.js.map +1 -0
- package/core/dist/runtime-v2/risk/index.d.ts +7 -0
- package/core/dist/runtime-v2/risk/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/risk/index.js +6 -0
- package/core/dist/runtime-v2/risk/index.js.map +1 -0
- package/core/dist/runtime-v2/risk/risk-calculator-policy.d.ts +18 -0
- package/core/dist/runtime-v2/risk/risk-calculator-policy.d.ts.map +1 -0
- package/core/dist/runtime-v2/risk/risk-calculator-policy.js +47 -0
- package/core/dist/runtime-v2/risk/risk-calculator-policy.js.map +1 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts +2 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js +83 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-doc-version-store.test.js.map +1 -0
- package/core/dist/runtime-v2/store/intent/index.d.ts +2 -1
- package/core/dist/runtime-v2/store/intent/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/intent/index.js +2 -1
- package/core/dist/runtime-v2/store/intent/index.js.map +1 -1
- package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts +28 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js +88 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-doc-version-store.js.map +1 -0
- package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js +14 -0
- package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.d.ts +2 -0
- package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.js +149 -0
- package/core/dist/runtime-v2/thinking-models/__tests__/thinking-models-policy.test.js.map +1 -0
- package/core/dist/runtime-v2/thinking-models/index.d.ts +3 -0
- package/core/dist/runtime-v2/thinking-models/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/thinking-models/index.js +3 -0
- package/core/dist/runtime-v2/thinking-models/index.js.map +1 -0
- package/core/dist/runtime-v2/thinking-models/thinking-models-policy.d.ts +73 -0
- package/core/dist/runtime-v2/thinking-models/thinking-models-policy.d.ts.map +1 -0
- package/core/dist/runtime-v2/thinking-models/thinking-models-policy.js +227 -0
- package/core/dist/runtime-v2/thinking-models/thinking-models-policy.js.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js +40 -1
- package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js +28 -1
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js.map +1 -1
- package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts +3 -0
- package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts.map +1 -1
- package/core/dist/runtime-v2/tools/artificer-output-typebox.js +3 -0
- package/core/dist/runtime-v2/tools/artificer-output-typebox.js.map +1 -1
- package/core/package.json +4 -0
- package/package.json +1 -1
- package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js +74 -3
- package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js.map +1 -1
- package/pd-cli/dist/commands/intent.d.ts +21 -4
- package/pd-cli/dist/commands/intent.d.ts.map +1 -1
- package/pd-cli/dist/commands/intent.js +88 -27
- package/pd-cli/dist/commands/intent.js.map +1 -1
- package/plugin/dist/commands/pain.js +2 -2
- package/plugin/dist/core/behavior-example-pack-assembler.d.ts +43 -0
- package/plugin/dist/core/behavior-example-pack-assembler.js +247 -0
- package/plugin/dist/core/intent-doc-reader-adapter.d.ts +13 -5
- package/plugin/dist/core/intent-doc-reader-adapter.js +25 -5
- package/plugin/dist/core/intent-doc-reader.d.ts +13 -4
- package/plugin/dist/core/intent-doc-reader.js +45 -24
- package/plugin/dist/core/rule-context-assembler.d.ts +45 -0
- package/plugin/dist/core/rule-context-assembler.js +148 -0
- package/plugin/dist/core/thinking-models.d.ts +12 -57
- package/plugin/dist/core/thinking-models.js +18 -224
- package/plugin/dist/core/trajectory-types.d.ts +18 -0
- package/plugin/dist/core/trajectory.d.ts +34 -2
- package/plugin/dist/core/trajectory.js +103 -0
- package/plugin/dist/hooks/gate.js +59 -2
- package/plugin/dist/hooks/pain.js +2 -2
- package/plugin/dist/hooks/prompt.js +2 -1
- package/plugin/dist/index.js +1 -1
- package/plugin/package.json +1 -1
- package/plugin/dist/core/evolution-migration.d.ts +0 -5
- package/plugin/dist/core/evolution-migration.js +0 -65
- package/plugin/dist/core/risk-calculator.d.ts +0 -22
- package/plugin/dist/core/risk-calculator.js +0 -88
- package/plugin/dist/core/rule-host-helpers.d.ts +0 -8
- package/plugin/dist/core/rule-host-helpers.js +0 -7
- package/plugin/dist/core/rule-host-types.d.ts +0 -7
- package/plugin/dist/core/rule-host-types.js +0 -7
- package/plugin/dist/core/schema/db-types.d.ts +0 -11
- package/plugin/dist/core/schema/db-types.js +0 -5
- package/plugin/dist/core/schema/index.d.ts +0 -17
- package/plugin/dist/core/schema/index.js +0 -15
- package/plugin/dist/core/schema/migration-runner.d.ts +0 -53
- package/plugin/dist/core/schema/migration-runner.js +0 -170
- package/plugin/dist/core/schema/migrations/001-init-trajectory.d.ts +0 -6
- package/plugin/dist/core/schema/migrations/001-init-trajectory.js +0 -190
- package/plugin/dist/core/schema/migrations/002-init-central.d.ts +0 -5
- package/plugin/dist/core/schema/migrations/002-init-central.js +0 -108
- package/plugin/dist/core/schema/migrations/003-init-workflow.d.ts +0 -5
- package/plugin/dist/core/schema/migrations/003-init-workflow.js +0 -50
- package/plugin/dist/core/schema/migrations/004-add-thinking-and-gfi.d.ts +0 -8
- package/plugin/dist/core/schema/migrations/004-add-thinking-and-gfi.js +0 -66
- package/plugin/dist/core/schema/migrations/index.d.ts +0 -16
- package/plugin/dist/core/schema/migrations/index.js +0 -27
- package/plugin/dist/core/schema/schema-definitions.d.ts +0 -46
- package/plugin/dist/core/schema/schema-definitions.js +0 -599
- package/plugin/scripts/db-migrate.mjs +0 -170
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { stableContentHash } from './evolution-reducer.js';
|
|
4
|
-
import { SystemLogger } from './system-logger.js';
|
|
5
|
-
function appendEvent(streamPath, event) {
|
|
6
|
-
fs.appendFileSync(streamPath, `${JSON.stringify(event)}\n`, 'utf8');
|
|
7
|
-
}
|
|
8
|
-
function loadImportedHashes(streamPath, workspaceDir) {
|
|
9
|
-
if (!fs.existsSync(streamPath))
|
|
10
|
-
return new Set();
|
|
11
|
-
const raw = fs.readFileSync(streamPath, 'utf8').trim();
|
|
12
|
-
if (!raw)
|
|
13
|
-
return new Set();
|
|
14
|
-
const hashes = new Set();
|
|
15
|
-
for (const line of raw.split('\n')) {
|
|
16
|
-
try {
|
|
17
|
-
const event = JSON.parse(line);
|
|
18
|
-
if (event.type !== 'legacy_import')
|
|
19
|
-
continue;
|
|
20
|
-
const hash = event.data.contentHash;
|
|
21
|
-
if (typeof hash === 'string')
|
|
22
|
-
hashes.add(hash);
|
|
23
|
-
}
|
|
24
|
-
catch (e) {
|
|
25
|
-
SystemLogger.log(workspaceDir, 'MIGRATION_WARN', `skip malformed line: ${String(e)}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return hashes;
|
|
29
|
-
}
|
|
30
|
-
export function migrateLegacyEvolutionData(workspaceDir) {
|
|
31
|
-
const streamPath = path.join(workspaceDir, 'memory', 'evolution.jsonl');
|
|
32
|
-
fs.mkdirSync(path.dirname(streamPath), { recursive: true });
|
|
33
|
-
const candidates = [
|
|
34
|
-
path.join(workspaceDir, 'memory', 'ISSUE_LOG.md'),
|
|
35
|
-
path.join(workspaceDir, 'memory', 'DECISIONS.md'),
|
|
36
|
-
path.join(workspaceDir, '.principles', 'PRINCIPLES.md'),
|
|
37
|
-
];
|
|
38
|
-
const existingHashes = loadImportedHashes(streamPath, workspaceDir);
|
|
39
|
-
let importedEvents = 0;
|
|
40
|
-
for (const sourceFile of candidates) {
|
|
41
|
-
if (!fs.existsSync(sourceFile)) {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
const content = fs.readFileSync(sourceFile, 'utf8').trim();
|
|
45
|
-
if (!content) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
const contentHash = stableContentHash(`${sourceFile}:${content}`);
|
|
49
|
-
if (existingHashes.has(contentHash)) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
appendEvent(streamPath, {
|
|
53
|
-
ts: new Date().toISOString(),
|
|
54
|
-
type: 'legacy_import',
|
|
55
|
-
data: {
|
|
56
|
-
sourceFile: path.relative(workspaceDir, sourceFile),
|
|
57
|
-
content,
|
|
58
|
-
contentHash,
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
importedEvents += 1;
|
|
62
|
-
existingHashes.add(contentHash);
|
|
63
|
-
}
|
|
64
|
-
return { importedEvents, streamPath };
|
|
65
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
2
|
-
export interface FileModification {
|
|
3
|
-
toolName: string;
|
|
4
|
-
params: Record<string, unknown>;
|
|
5
|
-
}
|
|
6
|
-
export declare function estimateLineChanges(modification: FileModification): number;
|
|
7
|
-
export declare function assessRiskLevel(filePath: string, modification: FileModification, riskPaths: string[]): RiskLevel;
|
|
8
|
-
/**
|
|
9
|
-
* Get the total line count of a target file.
|
|
10
|
-
* @param absoluteFilePath - Absolute path to the file
|
|
11
|
-
* @returns File line count, or null if file doesn't exist or can't be read
|
|
12
|
-
*/
|
|
13
|
-
export declare function getTargetFileLineCount(absoluteFilePath: string): number | null;
|
|
14
|
-
/**
|
|
15
|
-
* Calculate the effective line limit based on percentage of target file.
|
|
16
|
-
* @param targetLineCount - Total lines in target file
|
|
17
|
-
* @param percentage - Allowed percentage (0-100)
|
|
18
|
-
* @param minLines - Absolute minimum threshold
|
|
19
|
-
* @param maxLines - Optional upper bound to prevent misconfiguration
|
|
20
|
-
* @returns Maximum allowed lines (at least minLines, at most maxLines if provided)
|
|
21
|
-
*/
|
|
22
|
-
export declare function calculatePercentageThreshold(targetLineCount: number, percentage: number, minLines: number, maxLines?: number): number;
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/* global NodeJS */
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import { isRisky } from '../utils/io.js';
|
|
4
|
-
export function estimateLineChanges(modification) {
|
|
5
|
-
const { toolName, params } = modification;
|
|
6
|
-
if (toolName === 'write_file' || toolName === 'write') {
|
|
7
|
-
const content = params.content || '';
|
|
8
|
-
return content.split('\n').length;
|
|
9
|
-
}
|
|
10
|
-
if (toolName === 'replace' || toolName === 'edit') {
|
|
11
|
-
const newContent = params.new_string || params.newText || '';
|
|
12
|
-
return newContent.split('\n').length;
|
|
13
|
-
}
|
|
14
|
-
if (toolName === 'apply_patch' || toolName === 'patch') {
|
|
15
|
-
const patch = params.patch || '';
|
|
16
|
-
// Rough estimate for patch files
|
|
17
|
-
return patch.split('\n').filter((l) => l.startsWith('+') || l.startsWith('-')).length;
|
|
18
|
-
}
|
|
19
|
-
if (toolName === 'delete_file') {
|
|
20
|
-
// Deleting a file is considered a significant change, but we don't know the size.
|
|
21
|
-
// We'll treat it as a medium-to-large size change.
|
|
22
|
-
return 50;
|
|
23
|
-
}
|
|
24
|
-
return 0;
|
|
25
|
-
}
|
|
26
|
-
export function assessRiskLevel(filePath, modification, riskPaths) {
|
|
27
|
-
const isRiskPath = isRisky(filePath, riskPaths);
|
|
28
|
-
const estimatedLines = estimateLineChanges(modification);
|
|
29
|
-
if (isRiskPath) {
|
|
30
|
-
if (estimatedLines > 100)
|
|
31
|
-
return 'CRITICAL';
|
|
32
|
-
return 'HIGH';
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
if (estimatedLines > 100)
|
|
36
|
-
return 'HIGH';
|
|
37
|
-
if (estimatedLines > 10)
|
|
38
|
-
return 'MEDIUM';
|
|
39
|
-
return 'LOW';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Get the total line count of a target file.
|
|
44
|
-
* @param absoluteFilePath - Absolute path to the file
|
|
45
|
-
* @returns File line count, or null if file doesn't exist or can't be read
|
|
46
|
-
*/
|
|
47
|
-
export function getTargetFileLineCount(absoluteFilePath) {
|
|
48
|
-
try {
|
|
49
|
-
if (!fs.existsSync(absoluteFilePath)) {
|
|
50
|
-
return null; // File genuinely doesn't exist
|
|
51
|
-
}
|
|
52
|
-
const stats = fs.statSync(absoluteFilePath);
|
|
53
|
-
if (!stats.isFile()) {
|
|
54
|
-
return null; // Not a regular file (directory, device, etc.)
|
|
55
|
-
}
|
|
56
|
-
const content = fs.readFileSync(absoluteFilePath, 'utf-8');
|
|
57
|
-
return content.split('\n').length;
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
// Log error before falling back to null - this is intentional for security gates
|
|
61
|
-
const error = e instanceof Error ? e : new Error(String(e));
|
|
62
|
-
const errorCode = e.code;
|
|
63
|
-
console.error(`[PD:RISK_CALC] Failed to read file for line count: ${absoluteFilePath}`, {
|
|
64
|
-
code: errorCode,
|
|
65
|
-
message: error.message,
|
|
66
|
-
});
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Calculate the effective line limit based on percentage of target file.
|
|
72
|
-
* @param targetLineCount - Total lines in target file
|
|
73
|
-
* @param percentage - Allowed percentage (0-100)
|
|
74
|
-
* @param minLines - Absolute minimum threshold
|
|
75
|
-
* @param maxLines - Optional upper bound to prevent misconfiguration
|
|
76
|
-
* @returns Maximum allowed lines (at least minLines, at most maxLines if provided)
|
|
77
|
-
*/
|
|
78
|
-
export function calculatePercentageThreshold(targetLineCount, percentage, minLines, maxLines) {
|
|
79
|
-
// Clamp percentage to valid range [0, 100]
|
|
80
|
-
const clampedPercentage = Math.max(0, Math.min(100, percentage));
|
|
81
|
-
const calculated = Math.round(targetLineCount * (clampedPercentage / 100));
|
|
82
|
-
let effectiveLimit = Math.max(calculated, minLines);
|
|
83
|
-
// Apply optional upper bound
|
|
84
|
-
if (maxLines !== undefined && maxLines > 0) {
|
|
85
|
-
effectiveLimit = Math.min(effectiveLimit, maxLines);
|
|
86
|
-
}
|
|
87
|
-
return effectiveLimit;
|
|
88
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rule Host Helpers — Re-exported from @principles/core (PRI-42)
|
|
3
|
-
*
|
|
4
|
-
* Canonical definitions moved to:
|
|
5
|
-
* packages/principles-core/src/runtime-v2/internalization/rule-host-helpers.ts
|
|
6
|
-
*/
|
|
7
|
-
export type { RuleHostHelpers } from '@principles/core/runtime-v2';
|
|
8
|
-
export { createRuleHostHelpers } from '@principles/core/runtime-v2';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rule Host Types — Re-exported from @principles/core (PRI-42)
|
|
3
|
-
*
|
|
4
|
-
* Canonical definitions moved to:
|
|
5
|
-
* packages/principles-core/src/runtime-v2/internalization/rule-host-contracts.ts
|
|
6
|
-
*/
|
|
7
|
-
export type { RuleHostInput, RuleHostDecision, RuleHostMeta, RuleHostResult, LoadedImplementation, } from '@principles/core/runtime-v2';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared type definitions for database operations.
|
|
3
|
-
* Kept separate to avoid circular dependencies between schema-definitions and migration-runner.
|
|
4
|
-
*/
|
|
5
|
-
/** Minimal interface for better-sqlite3 Database instances. */
|
|
6
|
-
export interface Db {
|
|
7
|
-
exec(_sql: string): unknown;
|
|
8
|
-
get<T = unknown>(_sql: string, ..._params: unknown[]): T | undefined;
|
|
9
|
-
run(_sql: string, ..._params: unknown[]): unknown;
|
|
10
|
-
close(): void;
|
|
11
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema Management — Unified database schema definitions and migrations.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* // In a database class constructor:
|
|
6
|
-
* import { ensureDatabaseSchema } from './schema';
|
|
7
|
-
* ensureDatabaseSchema(db, 'trajectory.db');
|
|
8
|
-
*
|
|
9
|
-
* CLI:
|
|
10
|
-
* node scripts/db-migrate.mjs status
|
|
11
|
-
* node scripts/db-migrate.mjs run
|
|
12
|
-
*/
|
|
13
|
-
export { MigrationRunner, ensureDatabaseSchema } from './migration-runner.js';
|
|
14
|
-
export { SCHEMAS, getCatalog, DB_TYPES } from './schema-definitions.js';
|
|
15
|
-
export { ALL_MIGRATIONS } from './migrations/index.js';
|
|
16
|
-
export type { Db } from './db-types.js';
|
|
17
|
-
export type { Migration, DbType, TableDefinition, ViewDefinition, FtsDefinition, SchemaCatalog, } from './migration-runner.js';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema Management — Unified database schema definitions and migrations.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* // In a database class constructor:
|
|
6
|
-
* import { ensureDatabaseSchema } from './schema';
|
|
7
|
-
* ensureDatabaseSchema(db, 'trajectory.db');
|
|
8
|
-
*
|
|
9
|
-
* CLI:
|
|
10
|
-
* node scripts/db-migrate.mjs status
|
|
11
|
-
* node scripts/db-migrate.mjs run
|
|
12
|
-
*/
|
|
13
|
-
export { MigrationRunner, ensureDatabaseSchema } from './migration-runner.js';
|
|
14
|
-
export { SCHEMAS, getCatalog, DB_TYPES } from './schema-definitions.js';
|
|
15
|
-
export { ALL_MIGRATIONS } from './migrations/index.js';
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration Runner — Executes and tracks schema migrations.
|
|
3
|
-
*
|
|
4
|
-
* Each migration is versioned. The runner reads the current version from
|
|
5
|
-
* the `schema_version` table and only executes migrations with higher IDs.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* const runner = new MigrationRunner(db);
|
|
9
|
-
* runner.run(allMigrations.filter(m => m.db === 'trajectory.db'));
|
|
10
|
-
*/
|
|
11
|
-
import type { Migration } from './schema-definitions.js';
|
|
12
|
-
import { type DbType } from './schema-definitions.js';
|
|
13
|
-
import type { Db } from './db-types.js';
|
|
14
|
-
export declare class MigrationRunner {
|
|
15
|
-
private readonly db;
|
|
16
|
-
constructor(db: Db);
|
|
17
|
-
/**
|
|
18
|
-
* Run all pending migrations for a given database type.
|
|
19
|
-
* @returns Array of migration names that were applied
|
|
20
|
-
*/
|
|
21
|
-
runMigrations(migrations: Migration[], _dbType: DbType): string[];
|
|
22
|
-
/**
|
|
23
|
-
* Apply all schema definitions (tables, indexes, views, FTS) for a database.
|
|
24
|
-
* This is a convenience method that creates everything from the schema catalog.
|
|
25
|
-
* Used for initial setup when no migrations exist yet.
|
|
26
|
-
*/
|
|
27
|
-
applySchemaCatalog(dbType: DbType): void;
|
|
28
|
-
/**
|
|
29
|
-
* Get the current migration version.
|
|
30
|
-
* Returns '000' if no version is set (fresh database).
|
|
31
|
-
*/
|
|
32
|
-
getCurrentVersion(): string;
|
|
33
|
-
/**
|
|
34
|
-
* Get all available migration info for a database type.
|
|
35
|
-
*/
|
|
36
|
-
getMigrationInfo(migrations: Migration[], dbType: DbType): {
|
|
37
|
-
id: string;
|
|
38
|
-
name: string;
|
|
39
|
-
applied: boolean;
|
|
40
|
-
}[];
|
|
41
|
-
/**
|
|
42
|
-
* Rollback the latest migration (if down migration is defined).
|
|
43
|
-
*/
|
|
44
|
-
rollback(migrations: Migration[], dbType: DbType): string | null;
|
|
45
|
-
private ensureVersionTable;
|
|
46
|
-
private setVersion;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Factory: create a MigrationRunner and apply schema catalog for a given database.
|
|
50
|
-
* This is the main entry point for database classes.
|
|
51
|
-
*/
|
|
52
|
-
export declare function ensureDatabaseSchema(db: Db, dbType: DbType): void;
|
|
53
|
-
export type { Migration, DbType, TableDefinition, ViewDefinition, FtsDefinition, SchemaCatalog } from './schema-definitions.js';
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration Runner — Executes and tracks schema migrations.
|
|
3
|
-
*
|
|
4
|
-
* Each migration is versioned. The runner reads the current version from
|
|
5
|
-
* the `schema_version` table and only executes migrations with higher IDs.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* const runner = new MigrationRunner(db);
|
|
9
|
-
* runner.run(allMigrations.filter(m => m.db === 'trajectory.db'));
|
|
10
|
-
*/
|
|
11
|
-
import { getCatalog } from './schema-definitions.js';
|
|
12
|
-
export class MigrationRunner {
|
|
13
|
-
db;
|
|
14
|
-
constructor(db) {
|
|
15
|
-
this.db = db;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Run all pending migrations for a given database type.
|
|
19
|
-
* @returns Array of migration names that were applied
|
|
20
|
-
*/
|
|
21
|
-
runMigrations(migrations, _dbType) {
|
|
22
|
-
// NOTE: _dbType is kept for API signature compatibility but migrations are pre-filtered by caller
|
|
23
|
-
void _dbType;
|
|
24
|
-
// Ensure schema_version table exists before anything else
|
|
25
|
-
this.ensureVersionTable();
|
|
26
|
-
const currentVersion = this.getCurrentVersion();
|
|
27
|
-
const applied = [];
|
|
28
|
-
// Filter to pending migrations (higher ID than current)
|
|
29
|
-
const pending = migrations
|
|
30
|
-
.filter(m => m.id > currentVersion)
|
|
31
|
-
.sort((a, b) => a.id.localeCompare(b.id));
|
|
32
|
-
for (const migration of pending) {
|
|
33
|
-
console.log(`[MigrationRunner] Applying ${migration.id}-${migration.name}...`);
|
|
34
|
-
try {
|
|
35
|
-
migration.up(this.db);
|
|
36
|
-
this.setVersion(migration.id);
|
|
37
|
-
applied.push(`${migration.id}-${migration.name}`);
|
|
38
|
-
}
|
|
39
|
-
catch (err) {
|
|
40
|
-
throw new Error(`Migration ${migration.id}-${migration.name} failed: ${String(err)}`, { cause: err });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (applied.length > 0) {
|
|
44
|
-
console.log(`[MigrationRunner] Applied ${applied.length} migration(s): ${applied.join(', ')}`);
|
|
45
|
-
}
|
|
46
|
-
return applied;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Apply all schema definitions (tables, indexes, views, FTS) for a database.
|
|
50
|
-
* This is a convenience method that creates everything from the schema catalog.
|
|
51
|
-
* Used for initial setup when no migrations exist yet.
|
|
52
|
-
*/
|
|
53
|
-
applySchemaCatalog(dbType) {
|
|
54
|
-
this.ensureVersionTable();
|
|
55
|
-
const catalog = getCatalog(dbType);
|
|
56
|
-
// Tables
|
|
57
|
-
for (const [key, table] of Object.entries(catalog.tables)) {
|
|
58
|
-
try {
|
|
59
|
-
this.db.exec(table.ddl);
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
throw new Error(`Failed to create table ${key}: ${String(err)}`, { cause: err });
|
|
63
|
-
}
|
|
64
|
-
// Indexes
|
|
65
|
-
for (const indexDdl of table.indexes ?? []) {
|
|
66
|
-
try {
|
|
67
|
-
this.db.exec(indexDdl);
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
throw new Error(`Failed to create index for ${key}: ${String(err)}`, { cause: err });
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Views
|
|
75
|
-
for (const [key, view] of Object.entries(catalog.views)) {
|
|
76
|
-
try {
|
|
77
|
-
this.db.exec(view.ddl);
|
|
78
|
-
}
|
|
79
|
-
catch (err) {
|
|
80
|
-
throw new Error(`Failed to create view ${key}: ${String(err)}`, { cause: err });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// FTS5 virtual tables
|
|
84
|
-
for (const [key, fts] of Object.entries(catalog.fts)) {
|
|
85
|
-
try {
|
|
86
|
-
this.db.exec(fts.ddl);
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
throw new Error(`Failed to create FTS table ${key}: ${String(err)}`, { cause: err });
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get the current migration version.
|
|
95
|
-
* Returns '000' if no version is set (fresh database).
|
|
96
|
-
*/
|
|
97
|
-
getCurrentVersion() {
|
|
98
|
-
try {
|
|
99
|
-
const row = this.db.get('SELECT version FROM schema_version ORDER BY version DESC LIMIT 1');
|
|
100
|
-
return row?.version ?? '000';
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
return '000';
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Get all available migration info for a database type.
|
|
108
|
-
*/
|
|
109
|
-
getMigrationInfo(migrations, dbType) {
|
|
110
|
-
const currentVersion = this.getCurrentVersion();
|
|
111
|
-
return migrations
|
|
112
|
-
.filter(m => m.db === dbType)
|
|
113
|
-
.sort((a, b) => a.id.localeCompare(b.id))
|
|
114
|
-
.map(m => ({
|
|
115
|
-
id: m.id,
|
|
116
|
-
name: m.name,
|
|
117
|
-
applied: m.id <= currentVersion,
|
|
118
|
-
}));
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Rollback the latest migration (if down migration is defined).
|
|
122
|
-
*/
|
|
123
|
-
rollback(migrations, dbType) {
|
|
124
|
-
const currentVersion = this.getCurrentVersion();
|
|
125
|
-
if (currentVersion === '000')
|
|
126
|
-
return null;
|
|
127
|
-
const migration = migrations.find(m => m.db === dbType && m.id === currentVersion);
|
|
128
|
-
if (!migration)
|
|
129
|
-
return null;
|
|
130
|
-
if (!migration.down) {
|
|
131
|
-
throw new Error(`Migration ${migration.id}-${migration.name} has no down migration`);
|
|
132
|
-
}
|
|
133
|
-
console.log(`[MigrationRunner] Rolling back ${migration.id}-${migration.name}...`);
|
|
134
|
-
migration.down(this.db);
|
|
135
|
-
// Set version to previous migration
|
|
136
|
-
const previousMigrations = migrations
|
|
137
|
-
.filter(m => m.db === dbType && m.id < currentVersion)
|
|
138
|
-
.sort((a, b) => b.id.localeCompare(a.id));
|
|
139
|
-
const newVersion = previousMigrations[0]?.id ?? '000';
|
|
140
|
-
this.setVersion(newVersion);
|
|
141
|
-
console.log(`[MigrationRunner] Rolled back to ${newVersion}`);
|
|
142
|
-
return migration.id;
|
|
143
|
-
}
|
|
144
|
-
// -----------------------------------------------------------------------
|
|
145
|
-
// Private helpers
|
|
146
|
-
// -----------------------------------------------------------------------
|
|
147
|
-
ensureVersionTable() {
|
|
148
|
-
this.db.exec(`
|
|
149
|
-
CREATE TABLE IF NOT EXISTS schema_version (
|
|
150
|
-
version TEXT NOT NULL DEFAULT '000'
|
|
151
|
-
)
|
|
152
|
-
`);
|
|
153
|
-
// Ensure at least one row exists
|
|
154
|
-
const count = this.db.get('SELECT COUNT(*) as cnt FROM schema_version');
|
|
155
|
-
if (!count || count.cnt === 0) {
|
|
156
|
-
this.db.exec("INSERT INTO schema_version (version) VALUES ('000')");
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
setVersion(version) {
|
|
160
|
-
this.db.exec(`UPDATE schema_version SET version = '${version}'`);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Factory: create a MigrationRunner and apply schema catalog for a given database.
|
|
165
|
-
* This is the main entry point for database classes.
|
|
166
|
-
*/
|
|
167
|
-
export function ensureDatabaseSchema(db, dbType) {
|
|
168
|
-
const runner = new MigrationRunner(db);
|
|
169
|
-
runner.applySchemaCatalog(dbType);
|
|
170
|
-
}
|