create-principles-disciple 1.147.4 → 1.147.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/_release/product-identity.json +1 -1
  2. package/codex-adapter/package.json +1 -1
  3. package/console/dist/server/models/HealthCheckModel.d.ts +0 -1
  4. package/console/dist/server/models/HealthCheckModel.js +0 -54
  5. package/console/dist/server/routes/update.js +5 -8
  6. package/console/dist/server/types/index.d.ts +1 -9
  7. package/console/dist/web/assets/app.js +18 -18
  8. package/core/dist/index.d.ts +1 -1
  9. package/core/dist/index.d.ts.map +1 -1
  10. package/core/dist/index.js +1 -1
  11. package/core/dist/index.js.map +1 -1
  12. package/core/dist/prompt-builder/index.d.ts +0 -1
  13. package/core/dist/prompt-builder/index.d.ts.map +1 -1
  14. package/core/dist/prompt-builder/index.js +0 -1
  15. package/core/dist/prompt-builder/index.js.map +1 -1
  16. package/core/dist/runtime-v2/adapter/output-schema-registry.js +2 -2
  17. package/core/dist/runtime-v2/control-plane-triage.d.ts +1 -1
  18. package/core/dist/runtime-v2/control-plane-triage.d.ts.map +1 -1
  19. package/core/dist/runtime-v2/control-plane-triage.js +0 -15
  20. package/core/dist/runtime-v2/control-plane-triage.js.map +1 -1
  21. package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +3 -6
  22. package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -1
  23. package/core/dist/runtime-v2/evidence-triage/observation-resolver.js +5 -10
  24. package/core/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -1
  25. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +2 -1
  26. package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts.map +1 -1
  27. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +3 -8
  28. package/core/dist/runtime-v2/evidence-triage/source-descriptors.js.map +1 -1
  29. package/core/dist/runtime-v2/evidence-triage/types.d.ts +1 -1
  30. package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -1
  31. package/core/dist/runtime-v2/evidence-triage/types.js +0 -1
  32. package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -1
  33. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
  34. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +4 -1
  35. package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
  36. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
  37. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +3 -8
  38. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
  39. package/core/dist/runtime-v2/golden-trace.d.ts.map +1 -1
  40. package/core/dist/runtime-v2/golden-trace.js +0 -1
  41. package/core/dist/runtime-v2/golden-trace.js.map +1 -1
  42. package/core/dist/runtime-v2/index.d.ts +5 -9
  43. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  44. package/core/dist/runtime-v2/index.js +4 -8
  45. package/core/dist/runtime-v2/index.js.map +1 -1
  46. package/core/dist/runtime-v2/internalization/rule-host-contracts.d.ts +0 -1
  47. package/core/dist/runtime-v2/internalization/rule-host-contracts.d.ts.map +1 -1
  48. package/core/dist/runtime-v2/operator-health-read-model.d.ts +0 -2
  49. package/core/dist/runtime-v2/operator-health-read-model.d.ts.map +1 -1
  50. package/core/dist/runtime-v2/operator-health-read-model.js +1 -55
  51. package/core/dist/runtime-v2/operator-health-read-model.js.map +1 -1
  52. package/core/dist/runtime-v2/signal-collector/confidence-gate.d.ts +1 -5
  53. package/core/dist/runtime-v2/signal-collector/confidence-gate.d.ts.map +1 -1
  54. package/core/dist/runtime-v2/signal-collector/confidence-gate.js +0 -9
  55. package/core/dist/runtime-v2/signal-collector/confidence-gate.js.map +1 -1
  56. package/core/dist/runtime-v2/signal-collector/keyword-stage.d.ts +2 -2
  57. package/core/dist/runtime-v2/signal-collector/keyword-stage.d.ts.map +1 -1
  58. package/core/dist/runtime-v2/signal-collector/keyword-stage.js +6 -10
  59. package/core/dist/runtime-v2/signal-collector/keyword-stage.js.map +1 -1
  60. package/core/dist/runtime-v2/signal-collector/llm-stage.d.ts +1 -1
  61. package/core/dist/runtime-v2/signal-collector/llm-stage.d.ts.map +1 -1
  62. package/core/dist/runtime-v2/signal-collector/llm-stage.js +3 -4
  63. package/core/dist/runtime-v2/signal-collector/llm-stage.js.map +1 -1
  64. package/core/dist/runtime-v2/signal-collector/signal-collector.js +4 -4
  65. package/core/dist/runtime-v2/signal-collector/signal-collector.js.map +1 -1
  66. package/core/dist/runtime-v2/signal-collector/types.d.ts +6 -8
  67. package/core/dist/runtime-v2/signal-collector/types.d.ts.map +1 -1
  68. package/core/dist/runtime-v2/signal-collector/types.js +6 -6
  69. package/core/dist/runtime-v2/signal-collector/types.js.map +1 -1
  70. package/core/dist/runtime-v2/trajectory-schema.d.ts +24 -4
  71. package/core/dist/runtime-v2/trajectory-schema.d.ts.map +1 -1
  72. package/core/dist/runtime-v2/trajectory-schema.js +58 -2
  73. package/core/dist/runtime-v2/trajectory-schema.js.map +1 -1
  74. package/core/dist/runtime-v2/types/event-types.d.ts +0 -35
  75. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  76. package/core/dist/runtime-v2/types/event-types.js +0 -19
  77. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  78. package/core/dist/runtime-v2/types/index.d.ts +2 -2
  79. package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
  80. package/core/dist/runtime-v2/types/index.js +1 -1
  81. package/core/dist/runtime-v2/types/index.js.map +1 -1
  82. package/core/dist/trajectory-types.d.ts +0 -2
  83. package/core/dist/trajectory-types.d.ts.map +1 -1
  84. package/core/package.json +1 -1
  85. package/dist/i18n.d.ts.map +1 -1
  86. package/dist/i18n.js +6 -0
  87. package/dist/i18n.js.map +1 -1
  88. package/dist/installer.d.ts +21 -0
  89. package/dist/installer.d.ts.map +1 -1
  90. package/dist/installer.js +80 -3
  91. package/dist/installer.js.map +1 -1
  92. package/dist/mvp-config.d.ts +2 -2
  93. package/dist/mvp-config.d.ts.map +1 -1
  94. package/dist/mvp-config.js +4 -2
  95. package/dist/mvp-config.js.map +1 -1
  96. package/host-runtime/dist/governance-signal-admission.d.ts +0 -2
  97. package/host-runtime/dist/governance-signal-admission.js +14 -15
  98. package/host-runtime/dist/production-pain-evidence.d.ts +1 -1
  99. package/host-runtime/dist/production-pain-evidence.js +42 -7
  100. package/host-runtime/dist/production-rulehost-gate.d.ts +0 -1
  101. package/host-runtime/dist/production-rulehost-gate.js +3 -4
  102. package/host-runtime/dist/signal-classifier.d.ts +8 -0
  103. package/host-runtime/dist/signal-classifier.js +10 -2
  104. package/host-runtime/package.json +1 -1
  105. package/package.json +3 -3
  106. package/pd-cli/dist/commands/pain-evidence.d.ts +2 -4
  107. package/pd-cli/dist/commands/pain-evidence.d.ts.map +1 -1
  108. package/pd-cli/dist/commands/pain-evidence.js +2 -4
  109. package/pd-cli/dist/commands/pain-evidence.js.map +1 -1
  110. package/pd-cli/dist/commands/runtime-canary.d.ts.map +1 -1
  111. package/pd-cli/dist/commands/runtime-canary.js +2 -68
  112. package/pd-cli/dist/commands/runtime-canary.js.map +1 -1
  113. package/pd-cli/dist/commands/runtime-diagnostics-export.d.ts.map +1 -1
  114. package/pd-cli/dist/commands/runtime-diagnostics-export.js +1 -25
  115. package/pd-cli/dist/commands/runtime-diagnostics-export.js.map +1 -1
  116. package/pd-cli/dist/commands/runtime-health-snapshot.d.ts.map +1 -1
  117. package/pd-cli/dist/commands/runtime-health-snapshot.js +0 -9
  118. package/pd-cli/dist/commands/runtime-health-snapshot.js.map +1 -1
  119. package/pd-cli/dist/index.js +0 -9
  120. package/pd-cli/dist/index.js.map +1 -1
  121. package/pd-mcp-server/dist/version.d.ts +1 -1
  122. package/pd-mcp-server/dist/version.js +1 -1
  123. package/pd-mcp-server/package.json +1 -1
  124. package/plugin/dist/bundle.js +492 -481
  125. package/plugin/dist/config/defaults/runtime.d.ts +0 -4
  126. package/plugin/dist/core/config.d.ts +0 -35
  127. package/plugin/dist/core/pain.d.ts +0 -1
  128. package/plugin/dist/core/session-tracker.d.ts +3 -51
  129. package/plugin/dist/core/signal-collector-host.d.ts +5 -13
  130. package/plugin/dist/core/signal-keyword-store.d.ts +2 -2
  131. package/plugin/dist/core/trajectory.d.ts +0 -2
  132. package/plugin/dist/governance-audit.js +2 -2
  133. package/plugin/dist/hooks/after-tool-call-helpers.d.ts +5 -12
  134. package/plugin/dist/hooks/after-tool-call-types.d.ts +0 -2
  135. package/plugin/dist/hooks/gate-block-helper.d.ts +1 -1
  136. package/plugin/dist/hooks/gate.d.ts +3 -4
  137. package/plugin/dist/hooks/pain.d.ts +4 -4
  138. package/plugin/dist/openclaw.plugin.json +1 -1
  139. package/plugin/dist/rulehost-evidence.js +45 -45
  140. package/plugin/dist/templates/pain_settings.json +0 -46
  141. package/plugin/dist/types/event-types.d.ts +1 -1
  142. package/plugin/openclaw.plugin.json +1 -1
  143. package/plugin/package.json +1 -1
  144. package/plugin/templates/pain_settings.json +0 -46
  145. package/release-manager/dist/i18n.js +6 -0
  146. package/release-manager/dist/installer.js +80 -3
  147. package/release-manager/dist/mvp-config.js +4 -2
  148. package/release-manager/package.json +1 -1
  149. package/workbuddy-adapter/package.json +1 -1
  150. package/core/dist/prompt-builder/attitude-directive.d.ts +0 -7
  151. package/core/dist/prompt-builder/attitude-directive.d.ts.map +0 -1
  152. package/core/dist/prompt-builder/attitude-directive.js +0 -39
  153. package/core/dist/prompt-builder/attitude-directive.js.map +0 -1
  154. package/core/dist/runtime-v2/gfi/gfi-kernel.d.ts +0 -12
  155. package/core/dist/runtime-v2/gfi/gfi-kernel.d.ts.map +0 -1
  156. package/core/dist/runtime-v2/gfi/gfi-kernel.js +0 -148
  157. package/core/dist/runtime-v2/gfi/gfi-kernel.js.map +0 -1
  158. package/core/dist/runtime-v2/gfi/gfi-policy.d.ts +0 -3
  159. package/core/dist/runtime-v2/gfi/gfi-policy.d.ts.map +0 -1
  160. package/core/dist/runtime-v2/gfi/gfi-policy.js +0 -23
  161. package/core/dist/runtime-v2/gfi/gfi-policy.js.map +0 -1
  162. package/core/dist/runtime-v2/gfi/gfi-read-model.d.ts +0 -78
  163. package/core/dist/runtime-v2/gfi/gfi-read-model.d.ts.map +0 -1
  164. package/core/dist/runtime-v2/gfi/gfi-read-model.js +0 -129
  165. package/core/dist/runtime-v2/gfi/gfi-read-model.js.map +0 -1
  166. package/core/dist/runtime-v2/gfi/gfi-types.d.ts +0 -70
  167. package/core/dist/runtime-v2/gfi/gfi-types.d.ts.map +0 -1
  168. package/core/dist/runtime-v2/gfi/gfi-types.js +0 -2
  169. package/core/dist/runtime-v2/gfi/gfi-types.js.map +0 -1
  170. package/core/dist/runtime-v2/gfi/index.d.ts +0 -6
  171. package/core/dist/runtime-v2/gfi/index.d.ts.map +0 -1
  172. package/core/dist/runtime-v2/gfi/index.js +0 -4
  173. package/core/dist/runtime-v2/gfi/index.js.map +0 -1
  174. package/pd-cli/dist/commands/runtime-gfi-snapshot.d.ts +0 -7
  175. package/pd-cli/dist/commands/runtime-gfi-snapshot.d.ts.map +0 -1
  176. package/pd-cli/dist/commands/runtime-gfi-snapshot.js +0 -101
  177. package/pd-cli/dist/commands/runtime-gfi-snapshot.js.map +0 -1
package/dist/installer.js CHANGED
@@ -1553,10 +1553,79 @@ export async function checkBuiltPlugin(pluginDir) {
1553
1553
  }
1554
1554
  }
1555
1555
  }
1556
+ /**
1557
+ * PRI-1102: a target that exists as a DANGLING link (an interrupted install
1558
+ * left a reparse point whose target is gone) is not a directory the installer
1559
+ * can copy into. `existsSync` follows the link and reports "missing", so the
1560
+ * backup step never moves it, and `ensureDir` then treats it as present —
1561
+ * the follow-up mkdir fails with ENOENT and aborts the whole install.
1562
+ *
1563
+ * Absent targets are created. A dangling link is removed (the link itself only,
1564
+ * never a target), and the caller recreates the real directory. Everything
1565
+ * else — a real directory, or a link that still resolves — is left untouched,
1566
+ * so an existing install is never destroyed by this step.
1567
+ */
1568
+ export async function preparePluginInstallTarget(targetDir) {
1569
+ let stats;
1570
+ try {
1571
+ stats = lstatSync(targetDir, { throwIfNoEntry: false });
1572
+ }
1573
+ catch (error) {
1574
+ throw new Error(`Cannot inspect plugin install target ${targetDir}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
1575
+ }
1576
+ if (stats !== undefined && stats.isSymbolicLink()) {
1577
+ let resolves = true;
1578
+ try {
1579
+ realpathSync(targetDir);
1580
+ }
1581
+ catch {
1582
+ resolves = false;
1583
+ }
1584
+ if (!resolves) {
1585
+ // fs-extra's remove unlinks the reparse point instead of traversing it.
1586
+ await fse.remove(targetDir);
1587
+ logger.warn(`Removed dangling link at ${targetDir} (target missing) — rebuilding the plugin install directory.`);
1588
+ }
1589
+ }
1590
+ await fse.ensureDir(targetDir);
1591
+ }
1592
+ /**
1593
+ * PRI-1102: a rollback is only as good as the state it returns to. The
1594
+ * pre-run state can itself be incomplete (a component directory the previous
1595
+ * run never finished, a link whose target is gone), so "restored" must not be
1596
+ * reported as a healthy install without checking what the restored paths
1597
+ * actually resolve to.
1598
+ */
1599
+ export function describeRestoredStateGaps() {
1600
+ const gaps = [];
1601
+ for (const dir of [getPluginExtDir(), getPdRuntimeDir()]) {
1602
+ let stats;
1603
+ try {
1604
+ stats = lstatSync(dir, { throwIfNoEntry: false });
1605
+ }
1606
+ catch (error) {
1607
+ gaps.push(`${dir} (unreadable: ${error instanceof Error ? error.message : String(error)})`);
1608
+ continue;
1609
+ }
1610
+ if (stats === undefined) {
1611
+ gaps.push(`${dir} (missing)`);
1612
+ continue;
1613
+ }
1614
+ if (stats.isSymbolicLink()) {
1615
+ try {
1616
+ realpathSync(dir);
1617
+ }
1618
+ catch {
1619
+ gaps.push(`${dir} (dangling link)`);
1620
+ }
1621
+ }
1622
+ }
1623
+ return gaps;
1624
+ }
1556
1625
  export async function installPluginToStaging(pluginDir, language) {
1557
1626
  const builtPluginDir = path.join(pluginDir, 'plugin');
1558
1627
  for (const targetDir of pluginInstallDirs()) {
1559
- await fse.ensureDir(targetDir);
1628
+ await preparePluginInstallTarget(targetDir);
1560
1629
  // PRI-1037 payload fix: npm-era payloads carried a ~16k-file node_modules
1561
1630
  // (the whole pi-ai/openai/anthropic tree, dragged in through the plugin's
1562
1631
  // historical file:./core dependency) plus a `core` junction, in BOTH plugin
@@ -4355,6 +4424,10 @@ transaction) {
4355
4424
  // pre-date this run, so it is NOT wholesale-removed. Report its retention
4356
4425
  // honestly instead of claiming "nothing else was modified".
4357
4426
  const workspaceTouched = !hasBackup && mutationStarted && journal?.lastState !== 'planned';
4427
+ // PRI-1102: `restored` describes the rollback operation, not the health of
4428
+ // the state it returned to. Name the gaps so "restored" is never read as
4429
+ // "usable install".
4430
+ const restoredGaps = hasBackup && restoreResult.restored ? describeRestoredStateGaps() : [];
4358
4431
  const rollbackSuffix = !hasBackup
4359
4432
  ? freshCleanup
4360
4433
  ? freshCleanup.failed.length === 0
@@ -4362,7 +4435,9 @@ transaction) {
4362
4435
  : t('rollback_fresh_clean_failed').replace('{dirs}', freshCleanup.failed.map((f) => f.dir).join(', '))
4363
4436
  : t('rollback_no_changes')
4364
4437
  : restoreResult.restored
4365
- ? t('rollback_restored')
4438
+ ? restoredGaps.length === 0
4439
+ ? t('rollback_restored')
4440
+ : t('rollback_restored_incomplete').replace('{paths}', restoredGaps.join(', '))
4366
4441
  : t('rollback_failed')
4367
4442
  .replace('{restoreError}', restoreResult.error ?? '')
4368
4443
  .replace('{extDir}', extDir)
@@ -4379,7 +4454,9 @@ transaction) {
4379
4454
  ? t('next_no_changes_lock')
4380
4455
  : t('next_no_changes_other'))
4381
4456
  : restoreResult.restored
4382
- ? t('next_restored')
4457
+ ? restoredGaps.length === 0
4458
+ ? t('next_restored')
4459
+ : t('next_restored_incomplete').replace('{paths}', restoredGaps.join(', '))
4383
4460
  : t('next_restore_failed')
4384
4461
  .replace('{extDir}', extDir)
4385
4462
  .replace('{backupDir}', backupDir ?? runtimeBackupDir ?? '')