@shepai/cli 1.15.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +168 -22
  2. package/dist/src/application/ports/output/agents/agent-executor.interface.d.ts +2 -0
  3. package/dist/src/application/ports/output/agents/agent-executor.interface.d.ts.map +1 -1
  4. package/dist/src/application/use-cases/features/create-feature.use-case.d.ts.map +1 -1
  5. package/dist/src/application/use-cases/features/create-feature.use-case.js +1 -0
  6. package/dist/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +2 -0
  7. package/dist/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  8. package/dist/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +5 -0
  9. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts +8 -7
  10. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -1
  11. package/dist/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +140 -16
  12. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts +44 -4
  13. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.d.ts.map +1 -1
  14. package/dist/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +86 -14
  15. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  16. package/dist/src/presentation/cli/commands/feat/new.command.js +3 -3
  17. package/dist/src/presentation/cli/ui/index.d.ts +1 -0
  18. package/dist/src/presentation/cli/ui/index.d.ts.map +1 -1
  19. package/dist/src/presentation/cli/ui/index.js +1 -0
  20. package/dist/src/presentation/cli/ui/spinner.d.ts +21 -0
  21. package/dist/src/presentation/cli/ui/spinner.d.ts.map +1 -0
  22. package/dist/src/presentation/cli/ui/spinner.js +45 -0
  23. package/dist/tsconfig.build.tsbuildinfo +1 -1
  24. package/package.json +1 -1
  25. package/web/.next/BUILD_ID +1 -1
  26. package/web/.next/build-manifest.json +2 -2
  27. package/web/.next/cache/.previewinfo +1 -1
  28. package/web/.next/cache/.rscinfo +1 -1
  29. package/web/.next/cache/config.json +3 -3
  30. package/web/.next/fallback-build-manifest.json +2 -2
  31. package/web/.next/prerender-manifest.json +3 -3
  32. package/web/.next/required-server-files.js +1 -1
  33. package/web/.next/required-server-files.json +1 -1
  34. package/web/.next/server/app/_global-error.html +2 -2
  35. package/web/.next/server/app/_global-error.rsc +1 -1
  36. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  37. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  38. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  39. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  40. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  41. package/web/.next/server/app/_not-found.html +2 -2
  42. package/web/.next/server/app/_not-found.rsc +1 -1
  43. package/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  44. package/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  46. package/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/web/.next/server/app/index.html +2 -2
  50. package/web/.next/server/app/index.rsc +1 -1
  51. package/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  52. package/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
  53. package/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  54. package/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
  55. package/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  56. package/web/.next/server/app/version.html +2 -2
  57. package/web/.next/server/app/version.rsc +1 -1
  58. package/web/.next/server/app/version.segments/_full.segment.rsc +1 -1
  59. package/web/.next/server/app/version.segments/_head.segment.rsc +1 -1
  60. package/web/.next/server/app/version.segments/_index.segment.rsc +1 -1
  61. package/web/.next/server/app/version.segments/_tree.segment.rsc +1 -1
  62. package/web/.next/server/app/version.segments/version/__PAGE__.segment.rsc +1 -1
  63. package/web/.next/server/app/version.segments/version.segment.rsc +1 -1
  64. package/web/.next/server/chunks/ssr/_19be0743._.js +1 -1
  65. package/web/.next/server/pages/404.html +2 -2
  66. package/web/.next/server/pages/500.html +2 -2
  67. package/web/.next/server/server-reference-manifest.js +1 -1
  68. package/web/.next/server/server-reference-manifest.json +1 -1
  69. package/web/.next/trace +1 -1
  70. package/web/.next/trace-build +1 -1
  71. /package/web/.next/static/{iYaq62xFNOChDTbH3WMrr → KqMr5DLdrvbaA-agLuHP1}/_buildManifest.js +0 -0
  72. /package/web/.next/static/{iYaq62xFNOChDTbH3WMrr → KqMr5DLdrvbaA-agLuHP1}/_clientMiddlewareManifest.json +0 -0
  73. /package/web/.next/static/{iYaq62xFNOChDTbH3WMrr → KqMr5DLdrvbaA-agLuHP1}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"new.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/new.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CA6C1C"}
1
+ {"version":3,"file":"new.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/new.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CA+C1C"}
@@ -12,7 +12,7 @@
12
12
  import { Command } from 'commander';
13
13
  import { container } from '../../../../infrastructure/di/container.js';
14
14
  import { CreateFeatureUseCase } from '../../../../application/use-cases/features/create-feature.use-case.js';
15
- import { colors, messages } from '../../ui/index.js';
15
+ import { colors, messages, spinner } from '../../ui/index.js';
16
16
  /**
17
17
  * Create the feat new command
18
18
  */
@@ -39,11 +39,11 @@ export function createNewCommand() {
39
39
  approvalMode = 'allow-plan';
40
40
  if (options.allowAll)
41
41
  approvalMode = 'allow-all';
42
- const feature = await useCase.execute({
42
+ const feature = await spinner('Thinking', () => useCase.execute({
43
43
  userInput: description,
44
44
  repositoryPath: repoPath,
45
45
  approvalMode,
46
- });
46
+ }));
47
47
  messages.newline();
48
48
  messages.success('Feature created');
49
49
  console.log(` ${colors.muted('ID:')} ${colors.accent(feature.id)}`);
@@ -19,4 +19,5 @@ export { TableFormatter, type DatabaseMeta } from './tables.js';
19
19
  export { OutputFormatter, type OutputFormat } from './output.js';
20
20
  export { renderDetailView, type DetailViewConfig, type DetailSection, type DetailField, type DetailTextBlock, } from './detail-view.js';
21
21
  export { renderListView, type ListViewConfig, type ListColumn } from './list-view.js';
22
+ export { spinner } from './spinner.js';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -19,3 +19,4 @@ export { TableFormatter } from './tables.js';
19
19
  export { OutputFormatter } from './output.js';
20
20
  export { renderDetailView, } from './detail-view.js';
21
21
  export { renderListView } from './list-view.js';
22
+ export { spinner } from './spinner.js';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CLI Design System - Spinner
3
+ *
4
+ * Lightweight terminal spinner for async operations.
5
+ * Uses the braille spinner frames from the symbols module.
6
+ *
7
+ * @example
8
+ * import { spinner } from './spinner';
9
+ * const result = await spinner('Thinking', async () => {
10
+ * return await someAsyncWork();
11
+ * });
12
+ */
13
+ /**
14
+ * Show a spinner while an async operation runs, then clear it.
15
+ *
16
+ * @param label - Text shown next to the spinner (e.g. "Thinking")
17
+ * @param fn - Async function to execute
18
+ * @returns The result of the async function
19
+ */
20
+ export declare function spinner<T>(label: string, fn: () => Promise<T>): Promise<T>;
21
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/ui/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAyBhF"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * CLI Design System - Spinner
3
+ *
4
+ * Lightweight terminal spinner for async operations.
5
+ * Uses the braille spinner frames from the symbols module.
6
+ *
7
+ * @example
8
+ * import { spinner } from './spinner';
9
+ * const result = await spinner('Thinking', async () => {
10
+ * return await someAsyncWork();
11
+ * });
12
+ */
13
+ import { symbols } from './symbols.js';
14
+ import { colors } from './colors.js';
15
+ /**
16
+ * Show a spinner while an async operation runs, then clear it.
17
+ *
18
+ * @param label - Text shown next to the spinner (e.g. "Thinking")
19
+ * @param fn - Async function to execute
20
+ * @returns The result of the async function
21
+ */
22
+ export async function spinner(label, fn) {
23
+ const frames = symbols.spinner;
24
+ let i = 0;
25
+ // Write initial frame
26
+ const write = () => {
27
+ const frame = frames[i % frames.length];
28
+ process.stderr.write(`\r${colors.muted(`${frame} ${label}...`)}`);
29
+ i++;
30
+ };
31
+ write();
32
+ const interval = setInterval(write, 80);
33
+ try {
34
+ const result = await fn();
35
+ clearInterval(interval);
36
+ // Clear the spinner line
37
+ process.stderr.write(`\r${' '.repeat(label.length + 6)}\r`);
38
+ return result;
39
+ }
40
+ catch (error) {
41
+ clearInterval(interval);
42
+ process.stderr.write(`\r${' '.repeat(label.length + 6)}\r`);
43
+ throw error;
44
+ }
45
+ }