create-principles-disciple 1.132.2 → 1.132.4

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 (229) hide show
  1. package/codex-adapter/dist/codec/index.d.ts +6 -0
  2. package/codex-adapter/dist/codec/index.js +5 -0
  3. package/codex-adapter/dist/codec/input-decoder.d.ts +13 -0
  4. package/codex-adapter/dist/codec/input-decoder.js +103 -0
  5. package/codex-adapter/dist/codec/output-encoder.d.ts +32 -0
  6. package/codex-adapter/dist/codec/output-encoder.js +51 -0
  7. package/codex-adapter/dist/host-adapter.d.ts +30 -0
  8. package/codex-adapter/dist/host-adapter.js +28 -0
  9. package/codex-adapter/dist/index.d.ts +25 -0
  10. package/codex-adapter/dist/index.js +19 -0
  11. package/codex-adapter/dist/ingestion/admission.d.ts +54 -0
  12. package/codex-adapter/dist/ingestion/admission.js +137 -0
  13. package/codex-adapter/dist/ingestion/catch-up.d.ts +41 -0
  14. package/codex-adapter/dist/ingestion/catch-up.js +94 -0
  15. package/codex-adapter/dist/ingestion/codex-home.d.ts +19 -0
  16. package/codex-adapter/dist/ingestion/codex-home.js +43 -0
  17. package/codex-adapter/dist/ingestion/codex-version.d.ts +30 -0
  18. package/codex-adapter/dist/ingestion/codex-version.js +53 -0
  19. package/codex-adapter/dist/ingestion/ingestion-fields.d.ts +17 -0
  20. package/codex-adapter/dist/ingestion/ingestion-fields.js +28 -0
  21. package/codex-adapter/dist/ingestion/ingestion.d.ts +71 -0
  22. package/codex-adapter/dist/ingestion/ingestion.js +248 -0
  23. package/codex-adapter/dist/ingestion/transcript-decoder.d.ts +72 -0
  24. package/codex-adapter/dist/ingestion/transcript-decoder.js +485 -0
  25. package/codex-adapter/dist/ingestion/transcript-locate.d.ts +13 -0
  26. package/codex-adapter/dist/ingestion/transcript-locate.js +75 -0
  27. package/codex-adapter/dist/ingestion/transcript-path.d.ts +25 -0
  28. package/codex-adapter/dist/ingestion/transcript-path.js +87 -0
  29. package/codex-adapter/dist/pd-hook.d.ts +9 -0
  30. package/codex-adapter/dist/pd-hook.js +159 -0
  31. package/codex-adapter/dist/tool-semantics.d.ts +20 -0
  32. package/codex-adapter/dist/tool-semantics.js +27 -0
  33. package/codex-adapter/dist/worker/workspace-worker.d.ts +59 -0
  34. package/codex-adapter/dist/worker/workspace-worker.js +270 -0
  35. package/codex-adapter/package.json +52 -0
  36. package/console/dist/server/routes/update.js +187 -19
  37. package/console/dist/server/update/mutation-controller.d.ts +18 -0
  38. package/console/dist/server/update/mutation-controller.js +29 -0
  39. package/console/dist/server/utils/installed-layout.d.ts +1 -0
  40. package/console/dist/server/utils/installed-layout.js +2 -0
  41. package/console/package.json +1 -0
  42. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +15 -0
  43. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  44. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.d.ts +2 -0
  45. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.d.ts.map +1 -0
  46. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.js +71 -0
  47. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.js.map +1 -0
  48. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.d.ts +2 -0
  49. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.d.ts.map +1 -0
  50. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.js +219 -0
  51. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.js.map +1 -0
  52. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.d.ts.map +1 -1
  53. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js +2 -3
  54. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js.map +1 -1
  55. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts +12 -1
  56. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts.map +1 -1
  57. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js +15 -2
  58. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js.map +1 -1
  59. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.d.ts +50 -0
  60. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.d.ts.map +1 -0
  61. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.js +93 -0
  62. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.js.map +1 -0
  63. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  64. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +5 -0
  65. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  66. package/core/dist/runtime-v2/internalization/__tests__/owner-decision.test.js +152 -0
  67. package/core/dist/runtime-v2/internalization/__tests__/owner-decision.test.js.map +1 -1
  68. package/core/dist/runtime-v2/internalization/owner-review.d.ts +7 -1
  69. package/core/dist/runtime-v2/internalization/owner-review.d.ts.map +1 -1
  70. package/core/dist/runtime-v2/internalization/owner-review.js +22 -3
  71. package/core/dist/runtime-v2/internalization/owner-review.js.map +1 -1
  72. package/core/package.json +3 -2
  73. package/dist/installer.d.ts +32 -0
  74. package/dist/installer.d.ts.map +1 -1
  75. package/dist/installer.js +198 -2
  76. package/dist/installer.js.map +1 -1
  77. package/dist/installers/codex-host-installer.d.ts.map +1 -1
  78. package/dist/installers/codex-host-installer.js +5 -3
  79. package/dist/installers/codex-host-installer.js.map +1 -1
  80. package/dist/update/release-manager-authority.d.ts +69 -0
  81. package/dist/update/release-manager-authority.d.ts.map +1 -0
  82. package/dist/update/release-manager-authority.js +125 -0
  83. package/dist/update/release-manager-authority.js.map +1 -0
  84. package/dist/utils/workspace-divergence.d.ts +36 -0
  85. package/dist/utils/workspace-divergence.d.ts.map +1 -0
  86. package/dist/utils/workspace-divergence.js +87 -0
  87. package/dist/utils/workspace-divergence.js.map +1 -0
  88. package/install-layout/dist/index.d.ts +5 -0
  89. package/install-layout/dist/index.js +1 -0
  90. package/install-layout/package.json +1 -1
  91. package/package.json +4 -2
  92. package/plugin/dist/bundle.js +870 -734
  93. package/plugin/dist/governance-audit.js +381 -247
  94. package/plugin/dist/openclaw-sdk.d.ts +3 -0
  95. package/plugin/dist/rulehost-evidence.js +420 -286
  96. package/plugin/dist/service/subagent-workflow/types.d.ts +2 -2
  97. package/plugin/dist/utils/retry.d.ts +1 -1
  98. package/plugin/dist/utils/workspace-resolver.d.ts +35 -4
  99. package/plugin/openclaw.plugin.json +1 -1
  100. package/plugin/package.json +1 -1
  101. package/release-manager/dist/i18n.d.ts +6 -0
  102. package/release-manager/dist/i18n.d.ts.map +1 -0
  103. package/release-manager/dist/i18n.js +234 -0
  104. package/release-manager/dist/i18n.js.map +1 -0
  105. package/release-manager/dist/index.d.ts +7 -0
  106. package/release-manager/dist/index.d.ts.map +1 -0
  107. package/release-manager/dist/index.js +474 -0
  108. package/release-manager/dist/index.js.map +1 -0
  109. package/release-manager/dist/installer.d.ts +217 -0
  110. package/release-manager/dist/installer.d.ts.map +1 -0
  111. package/release-manager/dist/installer.js +2451 -0
  112. package/release-manager/dist/installer.js.map +1 -0
  113. package/release-manager/dist/installers/codex-host-installer.d.ts +29 -0
  114. package/release-manager/dist/installers/codex-host-installer.d.ts.map +1 -0
  115. package/release-manager/dist/installers/codex-host-installer.js +496 -0
  116. package/release-manager/dist/installers/codex-host-installer.js.map +1 -0
  117. package/release-manager/dist/installers/index.d.ts +40 -0
  118. package/release-manager/dist/installers/index.d.ts.map +1 -0
  119. package/release-manager/dist/installers/index.js +35 -0
  120. package/release-manager/dist/installers/index.js.map +1 -0
  121. package/release-manager/dist/installers/openclaw-host-installer.d.ts +18 -0
  122. package/release-manager/dist/installers/openclaw-host-installer.d.ts.map +1 -0
  123. package/release-manager/dist/installers/openclaw-host-installer.js +414 -0
  124. package/release-manager/dist/installers/openclaw-host-installer.js.map +1 -0
  125. package/release-manager/dist/mvp-config.d.ts +197 -0
  126. package/release-manager/dist/mvp-config.d.ts.map +1 -0
  127. package/release-manager/dist/mvp-config.js +509 -0
  128. package/release-manager/dist/mvp-config.js.map +1 -0
  129. package/release-manager/dist/prompts.d.ts +30 -0
  130. package/release-manager/dist/prompts.d.ts.map +1 -0
  131. package/release-manager/dist/prompts.js +231 -0
  132. package/release-manager/dist/prompts.js.map +1 -0
  133. package/release-manager/dist/skill-language.d.ts +32 -0
  134. package/release-manager/dist/skill-language.d.ts.map +1 -0
  135. package/release-manager/dist/skill-language.js +107 -0
  136. package/release-manager/dist/skill-language.js.map +1 -0
  137. package/release-manager/dist/uninstaller.d.ts +55 -0
  138. package/release-manager/dist/uninstaller.d.ts.map +1 -0
  139. package/release-manager/dist/uninstaller.js +409 -0
  140. package/release-manager/dist/uninstaller.js.map +1 -0
  141. package/release-manager/dist/update/atomic-file.d.ts +35 -0
  142. package/release-manager/dist/update/atomic-file.d.ts.map +1 -0
  143. package/release-manager/dist/update/atomic-file.js +120 -0
  144. package/release-manager/dist/update/atomic-file.js.map +1 -0
  145. package/release-manager/dist/update/bootstrap-protocol.d.ts +55 -0
  146. package/release-manager/dist/update/bootstrap-protocol.d.ts.map +1 -0
  147. package/release-manager/dist/update/bootstrap-protocol.js +132 -0
  148. package/release-manager/dist/update/bootstrap-protocol.js.map +1 -0
  149. package/release-manager/dist/update/channel-metadata.d.ts +28 -0
  150. package/release-manager/dist/update/channel-metadata.d.ts.map +1 -0
  151. package/release-manager/dist/update/channel-metadata.js +90 -0
  152. package/release-manager/dist/update/channel-metadata.js.map +1 -0
  153. package/release-manager/dist/update/channel-promotion.d.ts +39 -0
  154. package/release-manager/dist/update/channel-promotion.d.ts.map +1 -0
  155. package/release-manager/dist/update/channel-promotion.js +55 -0
  156. package/release-manager/dist/update/channel-promotion.js.map +1 -0
  157. package/release-manager/dist/update/data-compatibility.d.ts +35 -0
  158. package/release-manager/dist/update/data-compatibility.d.ts.map +1 -0
  159. package/release-manager/dist/update/data-compatibility.js +45 -0
  160. package/release-manager/dist/update/data-compatibility.js.map +1 -0
  161. package/release-manager/dist/update/install-layout.d.ts +59 -0
  162. package/release-manager/dist/update/install-layout.d.ts.map +1 -0
  163. package/release-manager/dist/update/install-layout.js +127 -0
  164. package/release-manager/dist/update/install-layout.js.map +1 -0
  165. package/release-manager/dist/update/legacy-migration.d.ts +56 -0
  166. package/release-manager/dist/update/legacy-migration.d.ts.map +1 -0
  167. package/release-manager/dist/update/legacy-migration.js +254 -0
  168. package/release-manager/dist/update/legacy-migration.js.map +1 -0
  169. package/release-manager/dist/update/product-identity.d.ts +50 -0
  170. package/release-manager/dist/update/product-identity.d.ts.map +1 -0
  171. package/release-manager/dist/update/product-identity.js +63 -0
  172. package/release-manager/dist/update/product-identity.js.map +1 -0
  173. package/release-manager/dist/update/release-asset-manifest.d.ts +31 -0
  174. package/release-manager/dist/update/release-asset-manifest.d.ts.map +1 -0
  175. package/release-manager/dist/update/release-asset-manifest.js +161 -0
  176. package/release-manager/dist/update/release-asset-manifest.js.map +1 -0
  177. package/release-manager/dist/update/release-identity.d.ts +33 -0
  178. package/release-manager/dist/update/release-identity.d.ts.map +1 -0
  179. package/release-manager/dist/update/release-identity.js +108 -0
  180. package/release-manager/dist/update/release-identity.js.map +1 -0
  181. package/release-manager/dist/update/release-manager-authority.d.ts +69 -0
  182. package/release-manager/dist/update/release-manager-authority.d.ts.map +1 -0
  183. package/release-manager/dist/update/release-manager-authority.js +125 -0
  184. package/release-manager/dist/update/release-manager-authority.js.map +1 -0
  185. package/release-manager/dist/update/release-manager.d.ts +96 -0
  186. package/release-manager/dist/update/release-manager.d.ts.map +1 -0
  187. package/release-manager/dist/update/release-manager.js +253 -0
  188. package/release-manager/dist/update/release-manager.js.map +1 -0
  189. package/release-manager/dist/update/release-metadata.d.ts +57 -0
  190. package/release-manager/dist/update/release-metadata.d.ts.map +1 -0
  191. package/release-manager/dist/update/release-metadata.js +200 -0
  192. package/release-manager/dist/update/release-metadata.js.map +1 -0
  193. package/release-manager/dist/update/release-policy.d.ts +51 -0
  194. package/release-manager/dist/update/release-policy.d.ts.map +1 -0
  195. package/release-manager/dist/update/release-policy.js +103 -0
  196. package/release-manager/dist/update/release-policy.js.map +1 -0
  197. package/release-manager/dist/update/rollback-policy.d.ts +56 -0
  198. package/release-manager/dist/update/rollback-policy.d.ts.map +1 -0
  199. package/release-manager/dist/update/rollback-policy.js +61 -0
  200. package/release-manager/dist/update/rollback-policy.js.map +1 -0
  201. package/release-manager/dist/update/transaction-journal.d.ts +131 -0
  202. package/release-manager/dist/update/transaction-journal.d.ts.map +1 -0
  203. package/release-manager/dist/update/transaction-journal.js +346 -0
  204. package/release-manager/dist/update/transaction-journal.js.map +1 -0
  205. package/release-manager/dist/update/trust-metadata.d.ts +55 -0
  206. package/release-manager/dist/update/trust-metadata.d.ts.map +1 -0
  207. package/release-manager/dist/update/trust-metadata.js +170 -0
  208. package/release-manager/dist/update/trust-metadata.js.map +1 -0
  209. package/release-manager/dist/update/update-history.d.ts +46 -0
  210. package/release-manager/dist/update/update-history.d.ts.map +1 -0
  211. package/release-manager/dist/update/update-history.js +123 -0
  212. package/release-manager/dist/update/update-history.js.map +1 -0
  213. package/release-manager/dist/utils/config-file-io.d.ts +26 -0
  214. package/release-manager/dist/utils/config-file-io.d.ts.map +1 -0
  215. package/release-manager/dist/utils/config-file-io.js +128 -0
  216. package/release-manager/dist/utils/config-file-io.js.map +1 -0
  217. package/release-manager/dist/utils/env.d.ts +60 -0
  218. package/release-manager/dist/utils/env.d.ts.map +1 -0
  219. package/release-manager/dist/utils/env.js +308 -0
  220. package/release-manager/dist/utils/env.js.map +1 -0
  221. package/release-manager/dist/utils/logger.d.ts +15 -0
  222. package/release-manager/dist/utils/logger.d.ts.map +1 -0
  223. package/release-manager/dist/utils/logger.js +30 -0
  224. package/release-manager/dist/utils/logger.js.map +1 -0
  225. package/release-manager/dist/utils/workspace-divergence.d.ts +36 -0
  226. package/release-manager/dist/utils/workspace-divergence.d.ts.map +1 -0
  227. package/release-manager/dist/utils/workspace-divergence.js +87 -0
  228. package/release-manager/dist/utils/workspace-divergence.js.map +1 -0
  229. package/release-manager/package.json +79 -0
@@ -0,0 +1,474 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import * as path from 'path';
4
+ import * as url from 'url';
5
+ import { createRequire } from 'module';
6
+ import { banner, logger, setQuietMode } from './utils/logger.js';
7
+ import { runPrompts } from './prompts.js';
8
+ import { install } from './installer.js';
9
+ import { uninstall, checkInstallStatus } from './uninstaller.js';
10
+ import { checkEnvironment, detectWorkspace } from './utils/env.js';
11
+ import { MVP_CHANNELS, buildFailureOutput, } from './mvp-config.js';
12
+ import { setLanguage, t, getLanguage, isLanguage } from './i18n.js';
13
+ import { isHostTarget, HOST_TARGETS } from './installers/index.js';
14
+ export { isLanguage } from './i18n.js';
15
+ const __filename = url.fileURLToPath(import.meta.url);
16
+ const __dirname = path.dirname(__filename);
17
+ const PLUGIN_DIR = path.resolve(__dirname, '..');
18
+ // Fix-1 (P0-BUG-1): Read version from package.json instead of hardcoding.
19
+ // EP-06 (Source of Truth): package.json is the canonical version source.
20
+ // rc-2-no-as-bypass: validate the parsed JSON at runtime instead of `as` cast.
21
+ const requireFromMeta = createRequire(import.meta.url);
22
+ const pkgJson = requireFromMeta('../package.json');
23
+ if (typeof pkgJson !== 'object' || pkgJson === null) {
24
+ throw new Error('Invalid package.json: expected an object');
25
+ }
26
+ const pkgVersionValue = Object.hasOwn(pkgJson, 'version') ? Reflect.get(pkgJson, 'version') : undefined;
27
+ if (typeof pkgVersionValue !== 'string' || pkgVersionValue.length === 0) {
28
+ throw new Error('Invalid package.json: "version" must be a non-empty string');
29
+ }
30
+ const pkgVersion = pkgVersionValue;
31
+ export function toInstallJsonOutput(result) {
32
+ return {
33
+ success: result.success,
34
+ workspace: result.workspaceDir,
35
+ components: result.components,
36
+ enabledChannels: result.enabledChannels,
37
+ verification: result.verification,
38
+ nextAction: result.nextAction,
39
+ ...(result.success ? {} : {
40
+ reason: result.reason,
41
+ component: result.component,
42
+ dependency: result.dependency,
43
+ }),
44
+ };
45
+ }
46
+ async function runInstall(options) {
47
+ const jsonMode = options.json === true;
48
+ if (!isLanguage(options.lang)) {
49
+ if (jsonMode) {
50
+ console.log(JSON.stringify(buildFailureOutput('invalid_language', `--lang must be 'zh' or 'en', got: ${JSON.stringify(options.lang)}. Next: re-run with --lang zh or --lang en`), null, 2));
51
+ }
52
+ else {
53
+ logger.error(`--lang must be 'zh' or 'en', got: ${JSON.stringify(options.lang)}`);
54
+ logger.info(`${t('next_action')}: re-run with --lang zh or --lang en`);
55
+ }
56
+ process.exit(1);
57
+ return;
58
+ }
59
+ setLanguage(options.lang);
60
+ // ADR-0020 §2.3: Validate --host value. Default is 'openclaw' for backward compat.
61
+ const rawHost = typeof options.host === 'string' ? options.host : 'openclaw';
62
+ if (!isHostTarget(rawHost)) {
63
+ if (jsonMode) {
64
+ console.log(JSON.stringify(buildFailureOutput('invalid_host', `--host must be one of: ${HOST_TARGETS.join(', ')}. Got: ${JSON.stringify(rawHost)}. Next: re-run with --host openclaw (or --host codex / --host all)`), null, 2));
65
+ }
66
+ else {
67
+ logger.error(`--host must be one of: ${HOST_TARGETS.join(', ')}. Got: ${JSON.stringify(rawHost)}`);
68
+ logger.info(`Next: re-run with --host openclaw (or --host codex / --host all)`);
69
+ }
70
+ process.exit(1);
71
+ return;
72
+ }
73
+ const host = rawHost;
74
+ if (jsonMode) {
75
+ setQuietMode(true);
76
+ }
77
+ if (!jsonMode) {
78
+ console.log(banner);
79
+ console.log();
80
+ }
81
+ const env = checkEnvironment();
82
+ if (!env.hasNode) {
83
+ if (jsonMode) {
84
+ console.log(JSON.stringify(buildFailureOutput('node_not_found', 'Install Node.js >= 22 and retry'), null, 2));
85
+ }
86
+ else {
87
+ logger.error(t('node_required'));
88
+ }
89
+ process.exit(1);
90
+ return;
91
+ }
92
+ if (!env.isNodeSupported) {
93
+ const nextAction = `Install Node.js >= 22 and retry. Detected: ${env.nodeVersion ?? 'unknown'}`;
94
+ if (jsonMode) {
95
+ console.log(JSON.stringify({
96
+ ...buildFailureOutput('node_version_unsupported', nextAction),
97
+ detectedVersion: env.nodeVersion,
98
+ }, null, 2));
99
+ }
100
+ else {
101
+ logger.error(t('node_version_unsupported'));
102
+ logger.info(`${t('next_action')}: ${nextAction}`);
103
+ }
104
+ process.exit(1);
105
+ return;
106
+ }
107
+ if (!jsonMode) {
108
+ logger.success(`Node.js ${env.nodeVersion}`);
109
+ }
110
+ // ADR-0020: OpenClaw check is only required when host includes 'openclaw'.
111
+ // For --host codex, the operator may not have OpenClaw installed at all.
112
+ const needsOpenClaw = host === 'openclaw' || host === 'all';
113
+ if (needsOpenClaw && !env.hasOpenClaw) {
114
+ if (jsonMode) {
115
+ console.log(JSON.stringify(buildFailureOutput('openclaw_not_found', `${t('openclaw_required')} ${t('openclaw_install_hint')} | ${t('next_action')}: ${t('openclaw_rerun_hint')} or use --host codex to skip OpenClaw`), null, 2));
116
+ }
117
+ else {
118
+ logger.error(`\u274C ${t('openclaw_required')}`);
119
+ logger.info(` ${t('openclaw_install_hint')}`);
120
+ logger.info(` ${t('next_action')}: ${t('openclaw_rerun_hint')} or use --host codex to skip OpenClaw`);
121
+ }
122
+ process.exit(1);
123
+ return;
124
+ }
125
+ if (!jsonMode && needsOpenClaw) {
126
+ logger.success(`OpenClaw ${env.openclawVersion}`);
127
+ }
128
+ if (!jsonMode && host === 'codex') {
129
+ logger.info(`Host: Codex CLI (OpenClaw not required)`);
130
+ }
131
+ if (jsonMode && !options.yes && !options.nonInteractive) {
132
+ options.yes = true;
133
+ }
134
+ const workspaceInfo = detectWorkspace();
135
+ const cliOptions = {
136
+ language: options.lang,
137
+ workspaceDir: typeof options.workspace === 'string' ? options.workspace : undefined,
138
+ host,
139
+ stopGateway: options.stopGateway === true,
140
+ };
141
+ if (options.force) {
142
+ cliOptions.mode = 'force';
143
+ }
144
+ else if (options.smart) {
145
+ cliOptions.mode = 'smart';
146
+ }
147
+ else {
148
+ cliOptions.mode = workspaceInfo.isFirstInstall ? 'force' : 'smart';
149
+ }
150
+ if (!jsonMode && !options.nonInteractive && !options.yes) {
151
+ if (workspaceInfo.isFirstInstall) {
152
+ logger.info(t('first_install_detected'));
153
+ }
154
+ else {
155
+ logger.info(t('existing_install_detected'));
156
+ if (workspaceInfo.coreFiles.length > 0) {
157
+ logger.info(` ${t('existing_core_files')} ${workspaceInfo.coreFiles.join(', ')}`);
158
+ }
159
+ }
160
+ console.log();
161
+ }
162
+ const nonInteractive = options.nonInteractive || options.yes || jsonMode;
163
+ // Fix-4 (P0-BUG-4): In non-interactive mode, collect runtime profile from
164
+ // CLI flags (--provider/--api-key-env/--model) or env vars
165
+ // (PD_PROVIDER/PD_API_KEY_ENV/PD_MODEL). rc-9: when provider is given
166
+ // without apiKeyEnv, fail loud instead of silently writing an unusable
167
+ // profile. rc-3: validate provider allowlist and apiKeyEnv format before
168
+ // writing, reusing the same patterns as prompts.ts.
169
+ if (nonInteractive) {
170
+ const provider = typeof options.provider === 'string' ? options.provider : process.env.PD_PROVIDER;
171
+ const apiKeyEnv = typeof options.apiKeyEnv === 'string' ? options.apiKeyEnv : process.env.PD_API_KEY_ENV;
172
+ const model = typeof options.model === 'string' ? options.model : process.env.PD_MODEL;
173
+ if (provider) {
174
+ const allowedProviders = ['openai', 'anthropic', 'deepseek'];
175
+ if (!allowedProviders.includes(provider)) {
176
+ const msg = `--provider "${provider}" is not supported. Valid: openai, anthropic, deepseek.`;
177
+ if (jsonMode) {
178
+ console.log(JSON.stringify(buildFailureOutput('runtime_profile_invalid', msg), null, 2));
179
+ }
180
+ else {
181
+ logger.error(msg);
182
+ }
183
+ process.exit(1);
184
+ return;
185
+ }
186
+ if (!apiKeyEnv) {
187
+ const msg = `--provider "${provider}" given but --api-key-env is missing. Pass --api-key-env OPENAI_API_KEY (or set PD_API_KEY_ENV).`;
188
+ if (jsonMode) {
189
+ console.log(JSON.stringify(buildFailureOutput('runtime_profile_incomplete', msg), null, 2));
190
+ }
191
+ else {
192
+ logger.error(msg);
193
+ }
194
+ process.exit(1);
195
+ return;
196
+ }
197
+ if (!/^[A-Z_][A-Z0-9_]*$/.test(apiKeyEnv)) {
198
+ const msg = `--api-key-env "${apiKeyEnv}" is not a valid environment variable name (uppercase letters, digits, underscore; cannot start with a digit).`;
199
+ if (jsonMode) {
200
+ console.log(JSON.stringify(buildFailureOutput('runtime_profile_invalid', msg), null, 2));
201
+ }
202
+ else {
203
+ logger.error(msg);
204
+ }
205
+ process.exit(1);
206
+ return;
207
+ }
208
+ cliOptions.runtimeProfile = { provider, apiKeyEnv, model: model || undefined };
209
+ }
210
+ else if (apiKeyEnv) {
211
+ // rc-3: fail loud — apiKeyEnv without provider is unusable.
212
+ const msg = `--api-key-env given without --provider. Pass --provider openai (or set PD_PROVIDER).`;
213
+ if (jsonMode) {
214
+ console.log(JSON.stringify(buildFailureOutput('runtime_profile_incomplete', msg), null, 2));
215
+ }
216
+ else {
217
+ logger.error(msg);
218
+ }
219
+ process.exit(1);
220
+ return;
221
+ }
222
+ }
223
+ const installOptions = nonInteractive
224
+ ? {
225
+ language: cliOptions.language || getLanguage(),
226
+ mode: cliOptions.mode || (workspaceInfo.isFirstInstall ? 'force' : 'smart'),
227
+ workspaceDir: cliOptions.workspaceDir || workspaceInfo.detectedPath,
228
+ channels: [...MVP_CHANNELS],
229
+ overwriteConfig: false,
230
+ // ADR-0020 §2.3: propagate validated host target into install options.
231
+ host,
232
+ runtimeProfile: cliOptions.runtimeProfile,
233
+ stopGateway: cliOptions.stopGateway === true,
234
+ }
235
+ : await runPrompts(cliOptions, workspaceInfo);
236
+ if (!installOptions) {
237
+ if (jsonMode) {
238
+ console.log(JSON.stringify(buildFailureOutput('cancelled', 'Re-run the installer'), null, 2));
239
+ }
240
+ else {
241
+ logger.info(t('cancel_install'));
242
+ }
243
+ process.exit(0);
244
+ return;
245
+ }
246
+ // Test/hermetic-build override: when set, it must point at a COMPLETE
247
+ // self-contained release asset directory (component trees + _release
248
+ // manifest). Production never sets it. The env value is a PATH reaching
249
+ // install()'s file operations, so it is validated (absolute, no parent
250
+ // traversal) before use — an unvalidated env path here would be a
251
+ // path-traversal trust boundary hole even for a test-only override.
252
+ const pluginDirOverride = process.env.PD_INSTALL_PLUGIN_DIR;
253
+ if (pluginDirOverride !== undefined
254
+ && (!path.isAbsolute(pluginDirOverride) || pluginDirOverride.includes('..'))) {
255
+ console.log(JSON.stringify(buildFailureOutput('invalid_environment', `PD_INSTALL_PLUGIN_DIR must be an absolute directory path without '..': ${JSON.stringify(pluginDirOverride)}`), null, 2));
256
+ process.exit(1);
257
+ return;
258
+ }
259
+ const pluginDir = pluginDirOverride ?? PLUGIN_DIR;
260
+ const result = await install(installOptions, pluginDir, { quiet: jsonMode, nonInteractive: Boolean(nonInteractive) });
261
+ if (jsonMode) {
262
+ const output = toInstallJsonOutput(result);
263
+ console.log(JSON.stringify(output, null, 2));
264
+ if (!result.success) {
265
+ process.exit(1);
266
+ return;
267
+ }
268
+ }
269
+ else {
270
+ if (result.success) {
271
+ console.log();
272
+ logger.success(t('install_complete'));
273
+ console.log();
274
+ console.log(t('principles_disciple_setup'));
275
+ console.log();
276
+ console.log(t('detecting_environment'));
277
+ console.log(` OpenClaw integration target .... ${env.hasOpenClaw ? t('openclaw_target_found') : t('openclaw_target_not_found')}`);
278
+ console.log(` Node.js ........................ ${t('node_found')} (${env.nodeVersion})`);
279
+ console.log();
280
+ console.log(t('installing_mvp_components'));
281
+ console.log(` Runtime integration ............ ${result.components.plugin}`);
282
+ console.log(` Operator CLI ................... ${result.components.cli}`);
283
+ console.log(` Review console ................. ${result.components.console}${result.components.consoleEntrypoint ? ` (${result.components.consoleEntrypoint})` : ''}`);
284
+ console.log();
285
+ console.log(t('enabled_capabilities'));
286
+ for (const ch of result.enabledChannels) {
287
+ console.log(` ${ch}`);
288
+ }
289
+ console.log();
290
+ console.log(t('verification'));
291
+ console.log(` Configuration .................. ${result.verification.features}`);
292
+ console.log(` Demo verification .............. ${result.verification.storyA}${result.verification.storyASkipReason ? ` (${result.verification.storyASkipReason})` : ''}`);
293
+ // Fix-4: surface runtime profile status so the user knows whether LLM
294
+ // features (diagnose, candidate intake, internalization) will work.
295
+ if (installOptions.runtimeProfile) {
296
+ console.log(` LLM runtime profile ............ ${installOptions.runtimeProfile.provider} / ${installOptions.runtimeProfile.model ?? '(default)'} (key: $${installOptions.runtimeProfile.apiKeyEnv})`);
297
+ }
298
+ else {
299
+ console.log(` LLM runtime profile ............ not configured (configure via console: pd console open --workspace "${result.workspaceDir}")`);
300
+ }
301
+ console.log();
302
+ console.log(t('ready'));
303
+ console.log(`${t('diagnostics')}: pd runtime canary --workspace "${result.workspaceDir}" --json`);
304
+ }
305
+ else if (result.components.plugin === 'verified' && (result.components.cli === 'verified' || result.components.cli === 'verified_local_only')) {
306
+ const cliLabel = result.components.cli === 'verified_local_only' ? 'verified (local only)' : result.components.cli;
307
+ const diagCmd = result.components.cli === 'verified_local_only' && result.components.cliLocalPath
308
+ ? `"${result.components.cliLocalPath}" runtime canary --workspace "${result.workspaceDir}" --json`
309
+ : `pd runtime canary --workspace "${result.workspaceDir}" --json`;
310
+ console.log();
311
+ logger.warn(t('install_partial_complete'));
312
+ console.log();
313
+ console.log(t('principles_disciple_setup'));
314
+ console.log();
315
+ console.log(t('installing_mvp_components'));
316
+ console.log(` Runtime integration ............ ${result.components.plugin}`);
317
+ console.log(` Operator CLI ................... ${cliLabel}`);
318
+ console.log(` Review console ................. ${result.components.console}`);
319
+ console.log();
320
+ console.log(t('enabled_capabilities'));
321
+ for (const ch of result.enabledChannels) {
322
+ console.log(` ${ch}`);
323
+ }
324
+ console.log();
325
+ console.log(t('verification'));
326
+ console.log(` Configuration .................. ${result.verification.features}`);
327
+ console.log(` Demo verification .............. ${result.verification.storyA}${result.verification.storyASkipReason ? ` (${result.verification.storyASkipReason})` : ''}`);
328
+ console.log();
329
+ console.log(t('not_ready_for_release'));
330
+ console.log(`${t('diagnostics')}: ${diagCmd}`);
331
+ process.exit(1);
332
+ return;
333
+ }
334
+ else {
335
+ logger.error(`${t('install_failed')}: ${result.reason || result.error}`);
336
+ if (result.nextAction) {
337
+ logger.info(`${t('next_action')}: ${result.nextAction}`);
338
+ }
339
+ process.exit(1);
340
+ return;
341
+ }
342
+ }
343
+ }
344
+ async function runUninstall(options) {
345
+ // rc-3-fail-loud: validate --lang the same way runInstall does, instead of
346
+ // silently defaulting any non-'en' value to 'zh'.
347
+ if (!isLanguage(options.lang)) {
348
+ logger.error(`--lang must be 'zh' or 'en', got: ${JSON.stringify(options.lang)}`);
349
+ logger.info(`Next: re-run with --lang zh or --lang en`);
350
+ process.exit(1);
351
+ return;
352
+ }
353
+ setLanguage(options.lang);
354
+ // ADR-0020 §2.3: validate --host (default 'all' for uninstall).
355
+ const rawHost = typeof options.host === 'string' ? options.host : 'all';
356
+ if (!isHostTarget(rawHost)) {
357
+ logger.error(`--host must be one of: ${HOST_TARGETS.join(', ')}. Got: ${JSON.stringify(rawHost)}`);
358
+ logger.info(`Next: re-run with --host openclaw (or --host codex / --host all)`);
359
+ process.exit(1);
360
+ return;
361
+ }
362
+ const host = rawHost;
363
+ console.log(banner);
364
+ console.log();
365
+ logger.info(`Preparing to uninstall Principles Disciple (host: ${host})...\n`);
366
+ const result = await uninstall({
367
+ force: options.force === true,
368
+ lang: options.lang,
369
+ host,
370
+ });
371
+ if (!result.success) {
372
+ logger.error(`${t('uninstall_failed')}: ${result.error}`);
373
+ process.exit(1);
374
+ return;
375
+ }
376
+ }
377
+ async function showStatus(options) {
378
+ // rc-3-fail-loud: validate --lang the same way runInstall does.
379
+ if (!isLanguage(options.lang)) {
380
+ logger.error(`--lang must be 'zh' or 'en', got: ${JSON.stringify(options.lang)}`);
381
+ logger.info(`Next: re-run with --lang zh or --lang en`);
382
+ process.exit(1);
383
+ return;
384
+ }
385
+ setLanguage(options.lang);
386
+ console.log(banner);
387
+ console.log();
388
+ const status = checkInstallStatus();
389
+ console.log(`${t('install_status')}\n`);
390
+ for (const p of status.paths) {
391
+ const icon = p.type === 'dir' ? '[dir]' : '[file]';
392
+ const statusIcon = p.exists ? t('install_status_ok') : t('install_status_missing');
393
+ console.log(` ${statusIcon} ${icon} ${p.name}`);
394
+ console.log(` ${p.path}`);
395
+ }
396
+ console.log();
397
+ if (status.isInstalled) {
398
+ logger.success(t('pd_installed'));
399
+ console.log('\n User data (MD files, memory, state) is preserved on uninstall');
400
+ }
401
+ else {
402
+ logger.warn(t('pd_not_installed'));
403
+ console.log(`\n ${t('install_hint')}:`);
404
+ console.log(' npx create-principles-disciple');
405
+ }
406
+ }
407
+ // cli-7: exported so parser tests can inspect the REAL option registration
408
+ // (catches removal/rename/default-change of flags). Not .parse()'d on import —
409
+ // see the main-module guard at the bottom of this file.
410
+ export const program = new Command();
411
+ program
412
+ .name('create-principles-disciple')
413
+ .description('Principles Disciple - MVP-First Integration Wizard')
414
+ .version(pkgVersion);
415
+ program
416
+ .command('install', { isDefault: true, hidden: true })
417
+ .description('Install Principles Disciple (MVP-First)')
418
+ .option('-l, --lang <lang>', 'Language (zh/en)', 'zh')
419
+ .option('-f, --force', 'Force overwrite mode', false)
420
+ .option('-s, --smart', 'Smart merge mode', false)
421
+ .option('-w, --workspace <path>', 'Workspace directory')
422
+ .option('-y, --yes', 'Non-interactive mode with defaults', false)
423
+ .option('--non-interactive', 'Skip interactive prompts', false)
424
+ .option('--json', 'Output result as JSON (implies non-interactive)', false)
425
+ // Fix-4 (P0-BUG-4): allow non-interactive LLM runtime profile configuration.
426
+ // When --provider is given, the installer pre-fills pd.default profile
427
+ // instead of leaving it empty (which would cause silent LLM failures).
428
+ .option('--provider <provider>', 'LLM provider for pd.default profile (openai/anthropic/deepseek). Enables non-interactive runtime profile config.')
429
+ .option('--api-key-env <name>', 'Environment variable name holding the LLM API key (e.g. OPENAI_API_KEY). Requires --provider.')
430
+ .option('--model <model>', 'LLM model id (optional; sensible default per provider if omitted)')
431
+ // ADR-0020 §2.3: host target selector. Default 'openclaw' for backward compat.
432
+ .option('--host <host>', `Host platform (${HOST_TARGETS.join('/')})`, 'openclaw')
433
+ // Gateway lock prevention: auto-stop a running OpenClaw gateway before
434
+ // install (avoids EPERM on the backup rename) and restart it afterwards.
435
+ .option('--stop-gateway', 'Stop the OpenClaw gateway before install if running, restart after', false)
436
+ .action(async (options) => {
437
+ await runInstall(options);
438
+ });
439
+ program
440
+ .command('uninstall')
441
+ .alias('remove')
442
+ .alias('rm')
443
+ .description('Uninstall Principles Disciple (preserves user data)')
444
+ .option('-f, --force', 'Force uninstall without confirmation', false)
445
+ .option('-l, --lang <lang>', 'Language (zh/en)', 'zh')
446
+ // ADR-0020 §2.3: host-scoped uninstall. Default 'all' cleans every host
447
+ // PD ever registered with. Operators can scope to one host via --host codex.
448
+ .option('--host <host>', `Host platform (${HOST_TARGETS.join('/')})`, 'all')
449
+ .action(async (options) => {
450
+ await runUninstall(options);
451
+ });
452
+ program
453
+ .command('status')
454
+ .description('Check install status')
455
+ .option('-l, --lang <lang>', 'Language (zh/en)', 'zh')
456
+ .action(async (options) => {
457
+ await showStatus(options);
458
+ });
459
+ // cli-7: only wire the process handler and parse argv when this module is the
460
+ // CLI entry point — NOT when imported by tests (which inspect `program` opts
461
+ // directly). Without this guard, importing index.js would run the installer.
462
+ if (url.pathToFileURL(process.argv[1] ?? '').href === import.meta.url) {
463
+ process.on('uncaughtException', (error) => {
464
+ if (error instanceof Error && error.name === 'ExitPromptError') {
465
+ logger.info('Goodbye!');
466
+ }
467
+ else {
468
+ logger.error(`Uncaught error: ${error.message}`);
469
+ process.exit(1);
470
+ }
471
+ });
472
+ program.parse(process.argv);
473
+ }
474
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}