create-principles-disciple 1.132.2 → 1.132.3

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 (190) hide show
  1. package/console/dist/server/routes/update.js +187 -19
  2. package/console/dist/server/update/mutation-controller.d.ts +18 -0
  3. package/console/dist/server/update/mutation-controller.js +29 -0
  4. package/console/dist/server/utils/installed-layout.d.ts +1 -0
  5. package/console/dist/server/utils/installed-layout.js +2 -0
  6. package/console/package.json +1 -0
  7. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +15 -0
  8. package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
  9. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.d.ts +2 -0
  10. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.d.ts.map +1 -0
  11. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.js +71 -0
  12. package/core/dist/runtime-v2/adapter/__tests__/pd-stream-simple.test.js.map +1 -0
  13. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.d.ts +2 -0
  14. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.d.ts.map +1 -0
  15. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.js +219 -0
  16. package/core/dist/runtime-v2/adapter/__tests__/pi-ai-http-transport.test.js.map +1 -0
  17. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.d.ts.map +1 -1
  18. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js +2 -3
  19. package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js.map +1 -1
  20. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts +12 -1
  21. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts.map +1 -1
  22. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js +15 -2
  23. package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js.map +1 -1
  24. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.d.ts +50 -0
  25. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.d.ts.map +1 -0
  26. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.js +93 -0
  27. package/core/dist/runtime-v2/adapter/pi-ai-http-transport.js.map +1 -0
  28. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
  29. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +5 -0
  30. package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
  31. package/core/dist/runtime-v2/internalization/__tests__/owner-decision.test.js +152 -0
  32. package/core/dist/runtime-v2/internalization/__tests__/owner-decision.test.js.map +1 -1
  33. package/core/dist/runtime-v2/internalization/owner-review.d.ts +7 -1
  34. package/core/dist/runtime-v2/internalization/owner-review.d.ts.map +1 -1
  35. package/core/dist/runtime-v2/internalization/owner-review.js +22 -3
  36. package/core/dist/runtime-v2/internalization/owner-review.js.map +1 -1
  37. package/core/package.json +3 -2
  38. package/dist/installer.d.ts.map +1 -1
  39. package/dist/installer.js +50 -0
  40. package/dist/installer.js.map +1 -1
  41. package/dist/update/release-manager-authority.d.ts +69 -0
  42. package/dist/update/release-manager-authority.d.ts.map +1 -0
  43. package/dist/update/release-manager-authority.js +125 -0
  44. package/dist/update/release-manager-authority.js.map +1 -0
  45. package/dist/utils/workspace-divergence.d.ts +36 -0
  46. package/dist/utils/workspace-divergence.d.ts.map +1 -0
  47. package/dist/utils/workspace-divergence.js +87 -0
  48. package/dist/utils/workspace-divergence.js.map +1 -0
  49. package/install-layout/dist/index.d.ts +5 -0
  50. package/install-layout/dist/index.js +1 -0
  51. package/install-layout/package.json +1 -1
  52. package/package.json +3 -2
  53. package/plugin/dist/bundle.js +870 -734
  54. package/plugin/dist/governance-audit.js +381 -247
  55. package/plugin/dist/openclaw-sdk.d.ts +3 -0
  56. package/plugin/dist/rulehost-evidence.js +420 -286
  57. package/plugin/dist/service/subagent-workflow/types.d.ts +2 -2
  58. package/plugin/dist/utils/retry.d.ts +1 -1
  59. package/plugin/dist/utils/workspace-resolver.d.ts +35 -4
  60. package/plugin/openclaw.plugin.json +1 -1
  61. package/plugin/package.json +1 -1
  62. package/release-manager/dist/i18n.d.ts +6 -0
  63. package/release-manager/dist/i18n.d.ts.map +1 -0
  64. package/release-manager/dist/i18n.js +234 -0
  65. package/release-manager/dist/i18n.js.map +1 -0
  66. package/release-manager/dist/index.d.ts +7 -0
  67. package/release-manager/dist/index.d.ts.map +1 -0
  68. package/release-manager/dist/index.js +474 -0
  69. package/release-manager/dist/index.js.map +1 -0
  70. package/release-manager/dist/installer.d.ts +185 -0
  71. package/release-manager/dist/installer.d.ts.map +1 -0
  72. package/release-manager/dist/installer.js +2305 -0
  73. package/release-manager/dist/installer.js.map +1 -0
  74. package/release-manager/dist/installers/codex-host-installer.d.ts +29 -0
  75. package/release-manager/dist/installers/codex-host-installer.d.ts.map +1 -0
  76. package/release-manager/dist/installers/codex-host-installer.js +494 -0
  77. package/release-manager/dist/installers/codex-host-installer.js.map +1 -0
  78. package/release-manager/dist/installers/index.d.ts +40 -0
  79. package/release-manager/dist/installers/index.d.ts.map +1 -0
  80. package/release-manager/dist/installers/index.js +35 -0
  81. package/release-manager/dist/installers/index.js.map +1 -0
  82. package/release-manager/dist/installers/openclaw-host-installer.d.ts +18 -0
  83. package/release-manager/dist/installers/openclaw-host-installer.d.ts.map +1 -0
  84. package/release-manager/dist/installers/openclaw-host-installer.js +414 -0
  85. package/release-manager/dist/installers/openclaw-host-installer.js.map +1 -0
  86. package/release-manager/dist/mvp-config.d.ts +197 -0
  87. package/release-manager/dist/mvp-config.d.ts.map +1 -0
  88. package/release-manager/dist/mvp-config.js +509 -0
  89. package/release-manager/dist/mvp-config.js.map +1 -0
  90. package/release-manager/dist/prompts.d.ts +30 -0
  91. package/release-manager/dist/prompts.d.ts.map +1 -0
  92. package/release-manager/dist/prompts.js +231 -0
  93. package/release-manager/dist/prompts.js.map +1 -0
  94. package/release-manager/dist/skill-language.d.ts +32 -0
  95. package/release-manager/dist/skill-language.d.ts.map +1 -0
  96. package/release-manager/dist/skill-language.js +107 -0
  97. package/release-manager/dist/skill-language.js.map +1 -0
  98. package/release-manager/dist/uninstaller.d.ts +55 -0
  99. package/release-manager/dist/uninstaller.d.ts.map +1 -0
  100. package/release-manager/dist/uninstaller.js +409 -0
  101. package/release-manager/dist/uninstaller.js.map +1 -0
  102. package/release-manager/dist/update/atomic-file.d.ts +35 -0
  103. package/release-manager/dist/update/atomic-file.d.ts.map +1 -0
  104. package/release-manager/dist/update/atomic-file.js +120 -0
  105. package/release-manager/dist/update/atomic-file.js.map +1 -0
  106. package/release-manager/dist/update/bootstrap-protocol.d.ts +55 -0
  107. package/release-manager/dist/update/bootstrap-protocol.d.ts.map +1 -0
  108. package/release-manager/dist/update/bootstrap-protocol.js +132 -0
  109. package/release-manager/dist/update/bootstrap-protocol.js.map +1 -0
  110. package/release-manager/dist/update/channel-metadata.d.ts +28 -0
  111. package/release-manager/dist/update/channel-metadata.d.ts.map +1 -0
  112. package/release-manager/dist/update/channel-metadata.js +90 -0
  113. package/release-manager/dist/update/channel-metadata.js.map +1 -0
  114. package/release-manager/dist/update/channel-promotion.d.ts +39 -0
  115. package/release-manager/dist/update/channel-promotion.d.ts.map +1 -0
  116. package/release-manager/dist/update/channel-promotion.js +55 -0
  117. package/release-manager/dist/update/channel-promotion.js.map +1 -0
  118. package/release-manager/dist/update/data-compatibility.d.ts +35 -0
  119. package/release-manager/dist/update/data-compatibility.d.ts.map +1 -0
  120. package/release-manager/dist/update/data-compatibility.js +45 -0
  121. package/release-manager/dist/update/data-compatibility.js.map +1 -0
  122. package/release-manager/dist/update/install-layout.d.ts +59 -0
  123. package/release-manager/dist/update/install-layout.d.ts.map +1 -0
  124. package/release-manager/dist/update/install-layout.js +127 -0
  125. package/release-manager/dist/update/install-layout.js.map +1 -0
  126. package/release-manager/dist/update/legacy-migration.d.ts +56 -0
  127. package/release-manager/dist/update/legacy-migration.d.ts.map +1 -0
  128. package/release-manager/dist/update/legacy-migration.js +254 -0
  129. package/release-manager/dist/update/legacy-migration.js.map +1 -0
  130. package/release-manager/dist/update/product-identity.d.ts +50 -0
  131. package/release-manager/dist/update/product-identity.d.ts.map +1 -0
  132. package/release-manager/dist/update/product-identity.js +63 -0
  133. package/release-manager/dist/update/product-identity.js.map +1 -0
  134. package/release-manager/dist/update/release-asset-manifest.d.ts +31 -0
  135. package/release-manager/dist/update/release-asset-manifest.d.ts.map +1 -0
  136. package/release-manager/dist/update/release-asset-manifest.js +161 -0
  137. package/release-manager/dist/update/release-asset-manifest.js.map +1 -0
  138. package/release-manager/dist/update/release-identity.d.ts +33 -0
  139. package/release-manager/dist/update/release-identity.d.ts.map +1 -0
  140. package/release-manager/dist/update/release-identity.js +108 -0
  141. package/release-manager/dist/update/release-identity.js.map +1 -0
  142. package/release-manager/dist/update/release-manager-authority.d.ts +69 -0
  143. package/release-manager/dist/update/release-manager-authority.d.ts.map +1 -0
  144. package/release-manager/dist/update/release-manager-authority.js +125 -0
  145. package/release-manager/dist/update/release-manager-authority.js.map +1 -0
  146. package/release-manager/dist/update/release-manager.d.ts +96 -0
  147. package/release-manager/dist/update/release-manager.d.ts.map +1 -0
  148. package/release-manager/dist/update/release-manager.js +253 -0
  149. package/release-manager/dist/update/release-manager.js.map +1 -0
  150. package/release-manager/dist/update/release-metadata.d.ts +57 -0
  151. package/release-manager/dist/update/release-metadata.d.ts.map +1 -0
  152. package/release-manager/dist/update/release-metadata.js +200 -0
  153. package/release-manager/dist/update/release-metadata.js.map +1 -0
  154. package/release-manager/dist/update/release-policy.d.ts +51 -0
  155. package/release-manager/dist/update/release-policy.d.ts.map +1 -0
  156. package/release-manager/dist/update/release-policy.js +103 -0
  157. package/release-manager/dist/update/release-policy.js.map +1 -0
  158. package/release-manager/dist/update/rollback-policy.d.ts +56 -0
  159. package/release-manager/dist/update/rollback-policy.d.ts.map +1 -0
  160. package/release-manager/dist/update/rollback-policy.js +61 -0
  161. package/release-manager/dist/update/rollback-policy.js.map +1 -0
  162. package/release-manager/dist/update/transaction-journal.d.ts +131 -0
  163. package/release-manager/dist/update/transaction-journal.d.ts.map +1 -0
  164. package/release-manager/dist/update/transaction-journal.js +346 -0
  165. package/release-manager/dist/update/transaction-journal.js.map +1 -0
  166. package/release-manager/dist/update/trust-metadata.d.ts +55 -0
  167. package/release-manager/dist/update/trust-metadata.d.ts.map +1 -0
  168. package/release-manager/dist/update/trust-metadata.js +170 -0
  169. package/release-manager/dist/update/trust-metadata.js.map +1 -0
  170. package/release-manager/dist/update/update-history.d.ts +46 -0
  171. package/release-manager/dist/update/update-history.d.ts.map +1 -0
  172. package/release-manager/dist/update/update-history.js +123 -0
  173. package/release-manager/dist/update/update-history.js.map +1 -0
  174. package/release-manager/dist/utils/config-file-io.d.ts +26 -0
  175. package/release-manager/dist/utils/config-file-io.d.ts.map +1 -0
  176. package/release-manager/dist/utils/config-file-io.js +128 -0
  177. package/release-manager/dist/utils/config-file-io.js.map +1 -0
  178. package/release-manager/dist/utils/env.d.ts +60 -0
  179. package/release-manager/dist/utils/env.d.ts.map +1 -0
  180. package/release-manager/dist/utils/env.js +308 -0
  181. package/release-manager/dist/utils/env.js.map +1 -0
  182. package/release-manager/dist/utils/logger.d.ts +15 -0
  183. package/release-manager/dist/utils/logger.d.ts.map +1 -0
  184. package/release-manager/dist/utils/logger.js +30 -0
  185. package/release-manager/dist/utils/logger.js.map +1 -0
  186. package/release-manager/dist/utils/workspace-divergence.d.ts +36 -0
  187. package/release-manager/dist/utils/workspace-divergence.d.ts.map +1 -0
  188. package/release-manager/dist/utils/workspace-divergence.js +87 -0
  189. package/release-manager/dist/utils/workspace-divergence.js.map +1 -0
  190. package/release-manager/package.json +78 -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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"}