@t4h.framework/cli 0.0.0-experimental-29d0277 → 0.0.0-experimental-20261009202408

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 (41) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/bin/bin.js +1 -20
  3. package/dist/bin/bin.js.map +1 -1
  4. package/dist/commands/ai/ai-bootstrap.js +48 -183
  5. package/dist/commands/ai/ai-bootstrap.js.map +1 -1
  6. package/dist/commands/build/build.js +2 -6
  7. package/dist/commands/build/build.js.map +1 -1
  8. package/dist/commands/dev/dev.js +1 -8
  9. package/dist/commands/dev/dev.js.map +1 -1
  10. package/package.json +2 -11
  11. package/LICENSE +0 -21
  12. package/dist/commands/ai/ai-hook.js +0 -84
  13. package/dist/commands/ai/ai-hook.js.map +0 -1
  14. package/dist/commands/ai/tools/agent-instructions.js +0 -75
  15. package/dist/commands/ai/tools/agent-instructions.js.map +0 -1
  16. package/dist/commands/ai/tools/agent-settings.js +0 -56
  17. package/dist/commands/ai/tools/agent-settings.js.map +0 -1
  18. package/dist/commands/ai/tools/assets-lock.js +0 -34
  19. package/dist/commands/ai/tools/assets-lock.js.map +0 -1
  20. package/dist/commands/check/check.js +0 -185
  21. package/dist/commands/check/check.js.map +0 -1
  22. package/dist/commands/mcp/mcp-server.js +0 -235
  23. package/dist/commands/mcp/mcp-server.js.map +0 -1
  24. package/dist/commands/mcp/mcp-tools.js +0 -283
  25. package/dist/commands/mcp/mcp-tools.js.map +0 -1
  26. package/dist/commands/mcp/mcp.js +0 -71
  27. package/dist/commands/mcp/mcp.js.map +0 -1
  28. package/dist/commands/runtime/runtime.js +0 -143
  29. package/dist/commands/runtime/runtime.js.map +0 -1
  30. package/dist/commands/workflows/workflows.js +0 -166
  31. package/dist/commands/workflows/workflows.js.map +0 -1
  32. package/dist/tools/debug-log-option.js +0 -13
  33. package/dist/tools/debug-log-option.js.map +0 -1
  34. package/dist/tools/dev-server-client.js +0 -261
  35. package/dist/tools/dev-server-client.js.map +0 -1
  36. package/dist/tools/load-dev.js +0 -23
  37. package/dist/tools/load-dev.js.map +0 -1
  38. package/dist/tools/project-package.js +0 -67
  39. package/dist/tools/project-package.js.map +0 -1
  40. package/dist/tools/project-scripts.js +0 -53
  41. package/dist/tools/project-scripts.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @t4h.framework/cli
2
2
 
3
+ ## 0.0.0-experimental-20261009202408
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies []:
8
+ - @t4h.framework/dev@0.0.0-experimental-20261009202408
9
+
10
+ ## 0.16.17
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`fc4db5f`](https://github.com/tech4humans-brasil/framework/commit/fc4db5fa01454a45a3727b76dbacc215aa6b3ab7)]:
15
+ - @t4h.framework/dev@0.22.6
16
+
17
+ ## 0.16.16
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies []:
22
+ - @t4h.framework/dev@0.22.5
23
+
3
24
  ## 0.16.15
4
25
 
5
26
  ### Patch Changes
package/dist/bin/bin.js CHANGED
@@ -1,35 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { program } from 'commander';
3
3
  import { AIBootstrapCommand } from '../commands/ai/ai-bootstrap.js';
4
- import { aiHookCommand } from '../commands/ai/ai-hook.js';
5
4
  import { buildCommand } from '../commands/build/build.js';
6
- import { checkCommand } from '../commands/check/check.js';
7
5
  import { devCommand } from '../commands/dev/dev.js';
8
6
  import { harnessCommand } from '../commands/harness/harness.js';
9
- import { mcpCommand } from '../commands/mcp/mcp.js';
10
7
  import { publishCommand } from '../commands/publish/publish.js';
11
- import { runtimeCommand } from '../commands/runtime/runtime.js';
12
- import { workflowsCommand } from '../commands/workflows/workflows.js';
13
- import { ProjectPackageError } from '../tools/project-package.js';
14
8
  program.addCommand(devCommand);
15
9
  program.addCommand(publishCommand);
16
10
  program.addCommand(buildCommand);
17
11
  program.addCommand(AIBootstrapCommand);
18
12
  program.addCommand(harnessCommand);
19
- program.addCommand(workflowsCommand);
20
- program.addCommand(runtimeCommand);
21
- program.addCommand(checkCommand);
22
- program.addCommand(aiHookCommand);
23
- program.addCommand(mcpCommand);
24
- try {
25
- await program.parseAsync(process.argv);
26
- }
27
- catch (error) {
28
- if (!(error instanceof ProjectPackageError))
29
- throw error;
30
- process.stderr.write(`${error.message}\n`);
31
- process.exit(1);
32
- }
13
+ await program.parseAsync(process.argv);
33
14
  process.on('uncaughtException', error => {
34
15
  const isExitPromptError = error instanceof Error && error.name === 'ExitPromptError';
35
16
  if (isExitPromptError)
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAE9B,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,CAAC,CAAC,KAAK,YAAY,mBAAmB,CAAC;QAAE,MAAM,KAAK,CAAA;IAExD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAA;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE;IACtC,MAAM,iBAAiB,GACrB,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAA;IAE5D,IAAI,iBAAiB;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,KAAK,CAAA;AACb,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAChC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAElC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE;IACtC,MAAM,iBAAiB,GACrB,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAA;IAE5D,IAAI,iBAAiB;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,KAAK,CAAA;AACb,CAAC,CAAC,CAAA"}
@@ -2,129 +2,44 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { confirm, select } from '@inquirer/prompts';
4
4
  import { bootstrap as bootstrapHarness } from '@t4h.framework/harness';
5
- import { Command, Option } from 'commander';
5
+ import { Command } from 'commander';
6
6
  import { AI_PROVIDERS } from './ai-providers.js';
7
- import { buildAgentInstructions, frameworkBin, writeAgentInstructions, } from './tools/agent-instructions.js';
8
- import { installClaudeHooks, installMcpServer } from './tools/agent-settings.js';
9
- import { hashAsset, readAssetsLock, writeAssetsLock, } from './tools/assets-lock.js';
10
7
  import { copy } from './tools/copy.js';
11
8
  import { discoverPackages } from './tools/discover-packages.js';
12
9
  import { findNearestPackageJsonPath } from './tools/find-nearest-package-json-path.js';
13
10
  import { getAssetSources } from './tools/get-asset-sources.js';
14
- import { getPackagePath } from './tools/get-package-path.js';
15
- import { detectPackageManager } from '../../tools/project-scripts.js';
16
- async function readPackageVersion(packageName, packageJsonPath) {
17
- const packagePath = await getPackagePath(packageName, packageJsonPath);
18
- if (!packagePath)
19
- return null;
20
- try {
21
- const { version } = JSON.parse(await fs.promises.readFile(path.join(packagePath, 'package.json'), 'utf8'));
22
- return typeof version === 'string' ? version : null;
23
- }
24
- catch {
25
- return null;
26
- }
27
- }
28
- /**
29
- * Copies one asset. A copy nobody edited since the last sync (same hash as
30
- * the lock) is updated silently; a local edit is only replaced on consent.
31
- */
32
- async function syncAsset(sourcePath, destinationPath, key, origin, context) {
33
- const { options, previousLock, lock, row, kept } = context;
34
- const sourceHash = await hashAsset(sourcePath);
35
- const destinationHash = await hashAsset(destinationPath);
36
- const lockedHash = previousLock?.assets[key]?.hash;
37
- const record = (hash) => {
38
- if (hash)
39
- lock.assets[key] = { ...origin, hash };
40
- };
41
- if (destinationHash === null) {
11
+ import { isDirectoryEqual } from './tools/is-directory-equal.js';
12
+ import { isDirectory } from './tools/is-directory.js';
13
+ import { pathExists } from './tools/path-exists.js';
14
+ async function syncAsset(sourcePath, destinationPath, assetName, row) {
15
+ const destinationExists = await pathExists(destinationPath);
16
+ if (!destinationExists) {
42
17
  await copy(sourcePath, destinationPath);
43
- record(sourceHash);
44
18
  row.copied++;
45
19
  return;
46
20
  }
47
- if (destinationHash === sourceHash) {
48
- record(sourceHash);
21
+ const destinationIsDirectory = await isDirectory(destinationPath);
22
+ const hasDifferences = !destinationIsDirectory
23
+ ? true
24
+ : !(await isDirectoryEqual(sourcePath, destinationPath));
25
+ if (!hasDifferences) {
49
26
  row.ignored++;
50
27
  return;
51
28
  }
52
- const untouched = lockedHash !== undefined && lockedHash === destinationHash;
53
- const overwrite = untouched ||
54
- options.yes ||
55
- (!options.sync &&
56
- (await confirm({
57
- message: `Asset "${key}" was edited locally. Overwrite it?`,
58
- default: false,
59
- })));
60
- if (!overwrite) {
61
- // Keep tracking the framework's version so a later sync still sees the edit.
62
- if (lockedHash)
63
- lock.assets[key] = { ...origin, hash: lockedHash };
64
- kept.push(key);
29
+ const isOverwriting = await confirm({
30
+ message: `Asset "${assetName}" already exists and has differences. Overwrite it?`,
31
+ default: false,
32
+ });
33
+ if (!isOverwriting) {
65
34
  row.skipped++;
66
35
  return;
67
36
  }
68
37
  await copy(sourcePath, destinationPath);
69
- record(sourceHash);
70
- row.updated++;
71
- }
72
- /** Removes the assets a package no longer ships, unless edited locally. */
73
- async function removeStaleAssets(providerDir, summary, context) {
74
- for (const [key, locked] of Object.entries(context.previousLock?.assets ?? {})) {
75
- if (context.lock.assets[key])
76
- continue;
77
- const assetPath = path.join(providerDir, key);
78
- const row = (summary[key.split('/')[0]] ??= emptyRow());
79
- if ((await hashAsset(assetPath)) !== locked.hash) {
80
- context.kept.push(key);
81
- row.skipped++;
82
- continue;
83
- }
84
- await fs.promises.rm(assetPath, { recursive: true, force: true });
85
- row.removed++;
86
- }
87
- }
88
- const emptyRow = () => ({
89
- copied: 0,
90
- updated: 0,
91
- ignored: 0,
92
- skipped: 0,
93
- removed: 0,
94
- });
95
- async function selectProvider(options, targetDir) {
96
- const settingsPath = path.join(targetDir, '.framework', 'settings.json');
97
- const saved = await fs.promises
98
- .readFile(settingsPath, 'utf8')
99
- .then(content => JSON.parse(content).provider)
100
- .catch(() => undefined);
101
- const value = options.provider ?? (options.sync ? saved : undefined);
102
- if (value) {
103
- const provider = AI_PROVIDERS.find(entry => entry.value === value);
104
- if (!provider)
105
- throw new Error(`Unknown AI provider: ${value}`);
106
- return provider;
107
- }
108
- if (options.sync)
109
- throw new Error('No provider saved in .framework/settings.json; pass --provider');
110
- return select({
111
- message: 'Select a AI provider',
112
- choices: AI_PROVIDERS.map(target => ({
113
- name: target.name,
114
- value: target,
115
- })),
116
- default: AI_PROVIDERS.find(entry => entry.value === saved),
117
- });
38
+ row.copied++;
118
39
  }
119
40
  export const AIBootstrapCommand = new Command('ai-bootstrap')
120
- .description('Install the AI assets of the framework packages, the agent instructions, hooks and the MCP server')
121
- .addOption(new Option('--provider <provider>', 'Skip the prompt').choices(AI_PROVIDERS.map(({ value }) => value)))
122
- .option('-y, --yes', 'Overwrite assets edited locally without asking', false)
123
- .option('--sync', 'No prompts (CI, postinstall): update untouched assets, keep local edits, remove stale ones', false)
124
- .option('--no-instructions', 'Do not write the CLAUDE.md / AGENTS.md block')
125
- .option('--no-hooks', 'Do not install the Claude Code hooks')
126
- .option('--no-mcp', 'Do not register the framework MCP server')
127
- .action(async (options) => {
41
+ .description('Bootstrap AI assets from framework packages')
42
+ .action(async () => {
128
43
  const packageJsonPath = await findNearestPackageJsonPath();
129
44
  if (!packageJsonPath) {
130
45
  console.error('package.json was not found from the current directory.');
@@ -136,93 +51,43 @@ export const AIBootstrapCommand = new Command('ai-bootstrap')
136
51
  return;
137
52
  }
138
53
  const assets = await getAssetSources(frameworkPackages, packageJsonPath);
54
+ if (!Object.keys(assets).length) {
55
+ console.log('No AI assets were found in the declared framework packages.');
56
+ return;
57
+ }
58
+ const provider = await select({
59
+ message: 'Select a AI provider',
60
+ choices: AI_PROVIDERS.map(target => ({
61
+ name: target.name,
62
+ value: target,
63
+ })),
64
+ });
139
65
  const targetDir = process.env.INIT_CWD ?? process.cwd();
140
- const provider = await selectProvider(options, targetDir);
141
66
  await bootstrapHarness({ targetDir });
142
- await fs.promises.writeFile(path.join(targetDir, '.framework', 'settings.json'), JSON.stringify({ provider: provider.value }, null, 2));
143
- const versions = new Map(await Promise.all(frameworkPackages.map(async (name) => [name, await readPackageVersion(name, packageJsonPath)])));
144
- const providerDir = path.join(targetDir, provider.dir);
67
+ const settingsPath = path.join(targetDir, '.framework', 'settings.json');
68
+ await fs.promises.writeFile(settingsPath, JSON.stringify({ provider: provider.value }, null, 2));
145
69
  const summary = {};
146
- const previousLock = await readAssetsLock(targetDir);
147
- const context = {
148
- options,
149
- // Hashes from another provider's directory say nothing about this one.
150
- previousLock: previousLock?.provider === provider.value ? previousLock : null,
151
- lock: { provider: provider.value, assets: {} },
152
- kept: [],
153
- };
154
70
  const providerNames = new Set(AI_PROVIDERS.map(entry => entry.value));
155
71
  for (const [assetType, sources] of Object.entries(assets)) {
156
- const row = (summary[assetType] ??= emptyRow());
157
- const targetPath = path.join(providerDir, assetType);
72
+ const row = (summary[assetType] ??= {
73
+ copied: 0,
74
+ ignored: 0,
75
+ skipped: 0,
76
+ });
77
+ const targetPath = path.join(targetDir, provider.dir, assetType);
158
78
  await fs.promises.mkdir(targetPath, { recursive: true });
159
79
  for (const source of sources) {
160
- const origin = {
161
- package: source.packageName,
162
- version: versions.get(source.packageName) ?? null,
163
- };
164
- // A `claude` / `cursor` folder holds assets for that provider only.
165
- const entries = providerNames.has(source.assetName)
166
- ? source.assetName === provider.value
167
- ? (await fs.promises.readdir(source.sourcePath)).map(entry => ({
168
- name: entry,
169
- sourcePath: path.join(source.sourcePath, entry),
170
- }))
171
- : []
172
- : [{ name: source.assetName, sourcePath: source.sourcePath }];
173
- for (const entry of entries)
174
- await syncAsset(entry.sourcePath, path.join(targetPath, entry.name), `${assetType}/${entry.name}`, origin, { ...context, row });
80
+ if (providerNames.has(source.assetName)) {
81
+ if (source.assetName !== provider.value)
82
+ continue;
83
+ const entries = await fs.promises.readdir(source.sourcePath);
84
+ for (const entry of entries)
85
+ await syncAsset(path.join(source.sourcePath, entry), path.join(targetPath, entry), entry, row);
86
+ continue;
87
+ }
88
+ await syncAsset(source.sourcePath, path.join(targetPath, source.assetName), source.assetName, row);
175
89
  }
176
90
  }
177
- await removeStaleAssets(providerDir, summary, {
178
- ...context,
179
- row: emptyRow(),
180
- });
181
- await writeAssetsLock(targetDir, context.lock);
182
- const packageManager = detectPackageManager(targetDir);
183
- const bin = frameworkBin(packageManager);
184
- const [command, ...args] = bin.split(' ');
185
- const changes = [];
186
- if (options.instructions) {
187
- const file = provider.value === 'claude' ? 'CLAUDE.md' : 'AGENTS.md';
188
- const status = await writeAgentInstructions(path.join(targetDir, file), buildAgentInstructions({
189
- packageManager,
190
- packages: frameworkPackages.map(name => ({
191
- name,
192
- version: versions.get(name) ?? null,
193
- })),
194
- skillsDir: `${provider.dir}/skills`,
195
- mcp: options.mcp,
196
- }));
197
- if (status !== 'unchanged')
198
- changes.push(`${file} ${status}`);
199
- }
200
- if (options.mcp) {
201
- const configPath = provider.value === 'claude'
202
- ? path.join(targetDir, '.mcp.json')
203
- : path.join(providerDir, 'mcp.json');
204
- if (await installMcpServer(configPath, {
205
- command,
206
- args: [...args, 'mcp'],
207
- }))
208
- changes.push(`MCP server "framework" registered in ${path.relative(targetDir, configPath)}`);
209
- }
210
- if (options.hooks && provider.value === 'claude') {
211
- const settingsPath = path.join(providerDir, 'settings.json');
212
- if (await installClaudeHooks(settingsPath, [
213
- {
214
- event: 'PostToolUse',
215
- matcher: 'Edit|MultiEdit|Write',
216
- command: `${bin} ai-hook post-edit`,
217
- },
218
- { event: 'Stop', command: `${bin} ai-hook stop` },
219
- ]))
220
- changes.push(`hooks installed in ${path.relative(targetDir, settingsPath)}`);
221
- }
222
91
  console.table(summary);
223
- for (const change of changes)
224
- console.log(change);
225
- if (context.kept.length)
226
- console.log(`Kept local edits (run with --yes to replace them): ${context.kept.join(', ')}`);
227
92
  });
228
93
  //# sourceMappingURL=ai-bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-bootstrap.js","sourceRoot":"","sources":["../../../src/commands/ai/ai-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AACjE,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAChF,OAAO,EACL,SAAS,EACT,cAAc,EACd,eAAe,GAEhB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAA;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AA8BrE,KAAK,UAAU,kBAAkB,CAC/B,WAAmB,EACnB,eAAuB;IAEvB,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;IAEtE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACtC,MAAM,CACP,CACF,CAAA;QAED,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS,CACtB,UAAkB,EAClB,eAAuB,EACvB,GAAW,EACX,MAAmD,EACnD,OAAoB;IAEpB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAE1D,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAA;IACxD,MAAM,UAAU,GAAG,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;IAElD,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,EAAE;QACrC,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAA;IAClD,CAAC,CAAA;IAED,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;QACvC,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,GAAG,CAAC,MAAM,EAAE,CAAA;QAEZ,OAAM;IACR,CAAC;IAED,IAAI,eAAe,KAAK,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,GAAG,CAAC,OAAO,EAAE,CAAA;QAEb,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,eAAe,CAAA;IAE5E,MAAM,SAAS,GACb,SAAS;QACT,OAAO,CAAC,GAAG;QACX,CAAC,CAAC,OAAO,CAAC,IAAI;YACZ,CAAC,MAAM,OAAO,CAAC;gBACb,OAAO,EAAE,UAAU,GAAG,qCAAqC;gBAC3D,OAAO,EAAE,KAAK;aACf,CAAC,CAAC,CAAC,CAAA;IAER,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,6EAA6E;QAC7E,IAAI,UAAU;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;QAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,GAAG,CAAC,OAAO,EAAE,CAAA;QAEb,OAAM;IACR,CAAC;IAED,MAAM,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;IACvC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClB,GAAG,CAAC,OAAO,EAAE,CAAA;AACf,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,iBAAiB,CAC9B,WAAmB,EACnB,OAAwC,EACxC,OAAoB;IAEpB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CACxC,OAAO,CAAC,YAAY,EAAE,MAAM,IAAI,EAAE,CACnC,EAAE,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,SAAQ;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAA;QAExD,IAAI,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACtB,GAAG,CAAC,OAAO,EAAE,CAAA;YAEb,SAAQ;QACV,CAAC;QAED,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjE,GAAG,CAAC,OAAO,EAAE,CAAA;IACf,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,GAAoB,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;CACX,CAAC,CAAA;AAEF,KAAK,UAAU,cAAc,CAC3B,OAA2B,EAC3B,SAAiB;IAEjB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;IAExE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ;SAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;SAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAA8B,CAAC;SACnE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEpE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QAElE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;QAE/D,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI;QACd,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAA;IAEH,OAAO,MAAM,CAAa;QACxB,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;KAC3D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;KAC1D,WAAW,CACV,mGAAmG,CACpG;KACA,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAC5D,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CACvC,CACF;KACA,MAAM,CAAC,WAAW,EAAE,gDAAgD,EAAE,KAAK,CAAC;KAC5E,MAAM,CACL,QAAQ,EACR,4FAA4F,EAC5F,KAAK,CACN;KACA,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;KAC3E,MAAM,CAAC,YAAY,EAAE,sCAAsC,CAAC;KAC5D,MAAM,CAAC,UAAU,EAAE,0CAA0C,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,MAAM,eAAe,GAAG,MAAM,0BAA0B,EAAE,CAAA;IAE1D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QAEvE,OAAM;IACR,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAA;IAEjE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;QAEjE,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;IAExE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAEzD,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAErC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,EACnD,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACtD,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB,CAAC,GAAG,CACnB,KAAK,EAAC,IAAI,EAAC,EAAE,CACX,CAAC,IAAI,EAAE,MAAM,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAU,CACnE,CACF,CACF,CAAA;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;IACtD,MAAM,OAAO,GAAoC,EAAE,CAAA;IACnD,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAA;IAEpD,MAAM,OAAO,GAA6B;QACxC,OAAO;QACP,uEAAuE;QACvE,YAAY,EACV,YAAY,EAAE,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;QACjE,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9C,IAAI,EAAE,EAAE;KACT,CAAA;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAErE,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAA;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAEpD,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAExD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,MAAM,CAAC,WAAW;gBAC3B,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI;aAClD,CAAA;YAED,oEAAoE;YACpE,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAC/B,MAAM,CAAC,SAAgC,CACxC;gBACC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,KAAK;oBACnC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAC3D,IAAI,EAAE,KAAK;wBACX,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;qBAChD,CAAC,CAAC;oBACL,CAAC,CAAC,EAAE;gBACN,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;YAE/D,KAAK,MAAM,KAAK,IAAI,OAAO;gBACzB,MAAM,SAAS,CACb,KAAK,CAAC,UAAU,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,EACjC,GAAG,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,EAC5B,MAAM,EACN,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CACpB,CAAA;QACL,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE;QAC5C,GAAG,OAAO;QACV,GAAG,EAAE,QAAQ,EAAE;KAChB,CAAC,CAAA;IAEF,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAE9C,MAAM,cAAc,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACtD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,CAAA;IACxC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAA;IAClE,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;QAEpE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAC1B,sBAAsB,CAAC;YACrB,cAAc;YACd,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,IAAI;gBACJ,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;aACpC,CAAC,CAAC;YACH,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,SAAS;YACnC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CACH,CAAA;QAED,IAAI,MAAM,KAAK,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,GACd,QAAQ,CAAC,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAExC,IACE,MAAM,gBAAgB,CAAC,UAAU,EAAE;YACjC,OAAO;YACP,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC;SACvB,CAAC;YAEF,OAAO,CAAC,IAAI,CACV,wCAAwC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAC/E,CAAA;IACL,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;QAE5D,IACE,MAAM,kBAAkB,CAAC,YAAY,EAAE;YACrC;gBACE,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,GAAG,GAAG,oBAAoB;aACpC;YACD,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,eAAe,EAAE;SAClD,CAAC;YAEF,OAAO,CAAC,IAAI,CACV,sBAAsB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAC/D,CAAA;IACL,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEtB,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAEjD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;QACrB,OAAO,CAAC,GAAG,CACT,sDAAsD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChF,CAAA;AACL,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ai-bootstrap.js","sourceRoot":"","sources":["../../../src/commands/ai/ai-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
+ import { mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath, resolvePackageJsonPath, resolveTsconfigFromPackageJsonPath, tsBuild, upApp, } from '@t4h.framework/dev/build';
3
4
  import { Command, Option } from 'commander';
4
- import { loadDevBuild, toProjectDir } from '../../tools/load-dev.js';
5
- import { importProjectPackage } from '../../tools/project-package.js';
6
5
  export const buildCommand = new Command('build')
7
6
  .option('--entrypoint <entrypoint path>', 'The entrypoint package json path', './package.json')
8
7
  .addOption(new Option('-e, --env <envs..>', 'The env secrets')
@@ -19,8 +18,6 @@ export const buildCommand = new Command('build')
19
18
  })
20
19
  .default({}))
21
20
  .action(async (options) => {
22
- const projectDir = toProjectDir(options.entrypoint);
23
- const { mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath, resolvePackageJsonPath, resolveTsconfigFromPackageJsonPath, tsBuild, upApp, } = await loadDevBuild(projectDir);
24
21
  const entrypointPackageJsonPath = await resolvePackageJsonPath(options.entrypoint);
25
22
  const entrypointTsConfigPath = await resolveTsconfigFromPackageJsonPath(entrypointPackageJsonPath);
26
23
  const { outDir } = await mkdirOutDirProjectFromTsConfigPathAndJsonPackagePath(entrypointTsConfigPath, entrypointPackageJsonPath);
@@ -32,8 +29,7 @@ export const buildCommand = new Command('build')
32
29
  });
33
30
  if (!compileResult.ok)
34
31
  throw new Error(compileResult.diagnostics.join('\n'));
35
- // The core the app imports, so `Env.run` reaches it.
36
- const { Env } = await importProjectPackage('@t4h.framework/core', projectDir);
32
+ const { Env } = await import('@t4h.framework/core');
37
33
  await Env.run(options.env, async () => {
38
34
  const { default: packageJson } = await import(entrypointPackageJsonPath, {
39
35
  with: { type: 'json' },
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build/build.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { parseEnv } from 'node:util';
4
+ import { Server } from '@t4h.framework/dev';
4
5
  import { Command, Option } from 'commander';
5
- import { debugLogOption, debugOption, toDebugLog, } from '../../tools/debug-log-option.js';
6
- import { loadDev, toProjectDir } from '../../tools/load-dev.js';
7
6
  export const devCommand = new Command('dev')
8
7
  .description('Start the development server')
9
8
  .option('--entrypoint <entrypoint path>', 'The entrypoint package json path', './package.json')
@@ -26,20 +25,14 @@ export const devCommand = new Command('dev')
26
25
  .default(3000)
27
26
  .argParser(value => Number.parseInt(value, 10)))
28
27
  .addOption(new Option('--host <host>', 'The HTTP host').default('localhost'))
29
- .addOption(debugOption())
30
- .addOption(debugLogOption())
31
28
  .action(async (options) => {
32
29
  if (options.envFileIfExists && fs.existsSync(options.envFileIfExists))
33
30
  Object.assign(options.env, parseEnv(fs.readFileSync(options.envFileIfExists, 'utf8')));
34
- const { Server } = await loadDev(toProjectDir(options.entrypoint), [
35
- 'Server',
36
- ]);
37
31
  const server = new Server({
38
32
  entrypoint: options.entrypoint,
39
33
  env: options.env,
40
34
  port: options.port,
41
35
  host: options.host,
42
- debugLog: toDebugLog(options),
43
36
  });
44
37
  const shutdown = (code) => {
45
38
  server.down().finally(() => process.exit(code));
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev/dev.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/cli",
3
- "version": "0.0.0-experimental-29d0277",
3
+ "version": "0.0.0-experimental-20261009202408",
4
4
  "description": "CLI tools for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/cli",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",
@@ -29,27 +29,18 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@inquirer/prompts": "^8.3.0",
32
+ "@t4h.framework/dev": "^0.0.0-experimental-20261009202408",
32
33
  "@t4h.framework/harness": "^0.3.2",
33
34
  "commander": "^14.0.3",
34
35
  "form-data": "^4.0.5",
35
36
  "tar": "^7.5.10"
36
37
  },
37
38
  "devDependencies": {
38
- "@t4h.framework/core": "^0.0.0-experimental-29d0277",
39
- "@t4h.framework/dev": "^0.0.0-experimental-29d0277",
40
39
  "@types/node": "^25.3.5",
41
40
  "@types/ssh2-sftp-client": "^9.0.6",
42
41
  "typescript": "^5.9.3",
43
42
  "vitest": "^4.0.18"
44
43
  },
45
- "peerDependencies": {
46
- "@t4h.framework/dev": "0.0.0-experimental-29d0277"
47
- },
48
- "peerDependenciesMeta": {
49
- "@t4h.framework/dev": {
50
- "optional": true
51
- }
52
- },
53
44
  "packageManager": "yarn@4.12.0",
54
45
  "engines": {
55
46
  "node": ">=22"
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Tech for humans
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,84 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { Argument, Command } from 'commander';
4
- import { runCommand } from '../../tools/project-scripts.js';
5
- import { formatCheckStep, runCheck } from '../check/check.js';
6
- /** Claude Code shows stderr to the model when a hook exits with 2. */
7
- const BLOCKING_EXIT_CODE = 2;
8
- const LINTED_EXTENSIONS = new Set(['.ts', '.tsx', '.mts', '.cts']);
9
- async function readStdin() {
10
- if (process.stdin.isTTY)
11
- return {};
12
- const chunks = [];
13
- for await (const chunk of process.stdin)
14
- chunks.push(chunk);
15
- try {
16
- return JSON.parse(Buffer.concat(chunks).toString('utf8') || '{}');
17
- }
18
- catch {
19
- return {};
20
- }
21
- }
22
- function findBin(fromDir, name) {
23
- let dir = path.resolve(fromDir);
24
- while (true) {
25
- const bin = path.join(dir, 'node_modules', '.bin', name);
26
- if (fs.existsSync(bin))
27
- return bin;
28
- const parent = path.dirname(dir);
29
- if (parent === dir)
30
- return null;
31
- dir = parent;
32
- }
33
- }
34
- const projectDirOf = (input) => process.env.CLAUDE_PROJECT_DIR ?? input.cwd ?? process.cwd();
35
- /**
36
- * Lints the file the agent just edited with the project's own ESLint, errors
37
- * only, so a non-deterministic workflow is fixed in the same turn.
38
- */
39
- async function postEdit(input) {
40
- const filePath = input.tool_input?.file_path;
41
- if (typeof filePath !== 'string')
42
- return 0;
43
- if (!LINTED_EXTENSIONS.has(path.extname(filePath)))
44
- return 0;
45
- if (!fs.existsSync(filePath))
46
- return 0;
47
- const projectDir = projectDirOf(input);
48
- const eslint = findBin(projectDir, 'eslint');
49
- if (!eslint)
50
- return 0;
51
- const { exitCode, output } = await runCommand(eslint, ['--quiet', '--no-warn-ignored', filePath], projectDir);
52
- if (exitCode === 0)
53
- return 0;
54
- process.stderr.write(`ESLint found errors in ${path.relative(projectDir, filePath)}; fix them:\n${output.trim()}\n`);
55
- return BLOCKING_EXIT_CODE;
56
- }
57
- /** Before the agent stops: types and lint must pass. Once, never in a loop. */
58
- async function stop(input) {
59
- if (input.stop_hook_active)
60
- return 0;
61
- const projectDir = projectDirOf(input);
62
- const result = await runCheck({
63
- entrypoint: path.join(projectDir, 'package.json'),
64
- env: {},
65
- only: ['types', 'lint'],
66
- skip: [],
67
- json: true,
68
- });
69
- if (result.ok)
70
- return 0;
71
- process.stderr.write(`\`framework check --only types,lint\` failed; fix it before finishing:\n${result.steps
72
- .filter(({ status }) => status === 'failed')
73
- .map(formatCheckStep)
74
- .join('\n')}\n`);
75
- return BLOCKING_EXIT_CODE;
76
- }
77
- export const aiHookCommand = new Command('ai-hook')
78
- .description('Hooks installed by `ai-bootstrap` for coding agents; reads the hook JSON on stdin')
79
- .addArgument(new Argument('<hook>').choices(['post-edit', 'stop']))
80
- .action(async (hook) => {
81
- const input = await readStdin();
82
- process.exit(hook === 'post-edit' ? await postEdit(input) : await stop(input));
83
- });
84
- //# sourceMappingURL=ai-hook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-hook.js","sourceRoot":"","sources":["../../../src/commands/ai/ai-hook.ts"],"names":[],"mappings":"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"}