@shepai/cli 1.33.1 → 1.34.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 (82) hide show
  1. package/dist/packages/core/src/application/ports/output/agents/index.d.ts +2 -0
  2. package/dist/packages/core/src/application/ports/output/agents/index.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/agents/index.js +1 -1
  4. package/dist/packages/core/src/application/ports/output/agents/structured-agent-caller.interface.d.ts +55 -0
  5. package/dist/packages/core/src/application/ports/output/agents/structured-agent-caller.interface.d.ts.map +1 -0
  6. package/dist/packages/core/src/application/ports/output/agents/structured-agent-caller.interface.js +30 -0
  7. package/dist/packages/core/src/application/ports/output/agents/structured-call-error.d.ts +9 -0
  8. package/dist/packages/core/src/application/ports/output/agents/structured-call-error.d.ts.map +1 -0
  9. package/dist/packages/core/src/application/ports/output/agents/structured-call-error.js +13 -0
  10. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  11. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +1 -0
  12. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts +10 -10
  13. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.d.ts.map +1 -1
  14. package/dist/packages/core/src/application/use-cases/features/create/metadata-generator.js +19 -56
  15. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +0 -5
  16. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  17. package/dist/packages/core/src/domain/generated/output.d.ts +4 -0
  18. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/di/container.js +7 -0
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -0
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +2 -0
  24. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts +5 -0
  25. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  26. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +12 -0
  27. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +3 -2
  29. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.d.ts +18 -0
  30. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.d.ts.map +1 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/common/structured-agent-caller.service.js +104 -0
  32. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +2 -0
  34. package/dist/src/presentation/cli/commands/feat/show.command.d.ts.map +1 -1
  35. package/dist/src/presentation/cli/commands/feat/show.command.js +1 -0
  36. package/dist/tsconfig.build.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/web/.next/BUILD_ID +1 -1
  39. package/web/.next/build-manifest.json +2 -2
  40. package/web/.next/cache/.previewinfo +1 -1
  41. package/web/.next/cache/.rscinfo +1 -1
  42. package/web/.next/cache/.tsbuildinfo +1 -1
  43. package/web/.next/cache/config.json +3 -3
  44. package/web/.next/fallback-build-manifest.json +2 -2
  45. package/web/.next/prerender-manifest.json +3 -3
  46. package/web/.next/required-server-files.js +1 -1
  47. package/web/.next/required-server-files.json +1 -1
  48. package/web/.next/server/app/_global-error.html +2 -2
  49. package/web/.next/server/app/_global-error.rsc +1 -1
  50. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  51. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  52. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  53. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  54. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  55. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_12059e3e.js.map +1 -1
  56. package/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
  57. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  58. package/web/.next/server/chunks/ssr/src_presentation_web_ed0934e5._.js.map +1 -1
  59. package/web/.next/server/pages/500.html +2 -2
  60. package/web/.next/server/server-reference-manifest.js +1 -1
  61. package/web/.next/server/server-reference-manifest.json +1 -1
  62. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  63. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  64. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  65. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  66. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  67. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  68. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  69. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  70. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  71. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  72. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  73. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__f12b60be._.js +1 -1
  74. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  75. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  76. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +1 -1
  77. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  78. package/web/.next/trace +1 -1
  79. package/web/.next/trace-build +1 -1
  80. /package/web/.next/static/{8Jpa4jggwUxbE7fG3j23F → HHW4FOl5T41Xe5-ljK9pc}/_buildManifest.js +0 -0
  81. /package/web/.next/static/{8Jpa4jggwUxbE7fG3j23F → HHW4FOl5T41Xe5-ljK9pc}/_clientMiddlewareManifest.json +0 -0
  82. /package/web/.next/static/{8Jpa4jggwUxbE7fG3j23F → HHW4FOl5T41Xe5-ljK9pc}/_ssgManifest.js +0 -0
@@ -0,0 +1,104 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { injectable, inject } from 'tsyringe';
14
+ import { AgentFeature } from '../../../../domain/generated/output.js';
15
+ import { StructuredCallError } from '../../../../application/ports/output/agents/structured-call-error.js';
16
+ /**
17
+ * Structured agent caller that abstracts native structured output vs prompt-based JSON extraction.
18
+ *
19
+ * Uses the agent's native structured output capability when available,
20
+ * otherwise falls back to prompt-based JSON extraction with brace-depth parsing.
21
+ */
22
+ let StructuredAgentCallerService = class StructuredAgentCallerService {
23
+ executorProvider;
24
+ constructor(executorProvider) {
25
+ this.executorProvider = executorProvider;
26
+ }
27
+ async call(prompt, schema, options) {
28
+ const executor = this.executorProvider.getExecutor();
29
+ if (executor.supportsFeature(AgentFeature.structuredOutput)) {
30
+ return this.callWithNativeSchema(executor, prompt, schema, options);
31
+ }
32
+ return this.callWithPromptFallback(executor, prompt, schema, options);
33
+ }
34
+ // Native structured output path
35
+ async callWithNativeSchema(executor, prompt, schema, options) {
36
+ const result = await executor.execute(prompt, { ...options, outputSchema: schema });
37
+ const structured = result.metadata?.structured_output;
38
+ if (structured != null)
39
+ return structured;
40
+ return this.parseJsonFromText(result.result);
41
+ }
42
+ // Prompt-based fallback path
43
+ async callWithPromptFallback(executor, prompt, schema, options) {
44
+ const wrappedPrompt = this.wrapPromptWithJsonInstructions(prompt, schema);
45
+ const result = await executor.execute(wrappedPrompt, options);
46
+ return this.parseJsonFromText(result.result);
47
+ }
48
+ wrapPromptWithJsonInstructions(prompt, schema) {
49
+ return `${prompt}
50
+
51
+ IMPORTANT: You MUST respond with ONLY a JSON object matching this schema. No markdown fences, no explanation, no extra text.
52
+
53
+ JSON Schema:
54
+ ${JSON.stringify(schema, null, 2)}
55
+
56
+ Return ONLY the JSON object.`;
57
+ }
58
+ // Extract first JSON object from text using brace-depth tracking
59
+ parseJsonFromText(text) {
60
+ const start = text.indexOf('{');
61
+ if (start === -1) {
62
+ throw new StructuredCallError('No JSON object found in agent response', 'parse_failed');
63
+ }
64
+ let depth = 0;
65
+ let inString = false;
66
+ for (let i = start; i < text.length; i++) {
67
+ const ch = text[i];
68
+ if (inString) {
69
+ if (ch === '\\') {
70
+ i++; // skip escaped character
71
+ }
72
+ else if (ch === '"') {
73
+ inString = false;
74
+ }
75
+ continue;
76
+ }
77
+ if (ch === '"') {
78
+ inString = true;
79
+ }
80
+ else if (ch === '{') {
81
+ depth++;
82
+ }
83
+ else if (ch === '}') {
84
+ depth--;
85
+ if (depth === 0) {
86
+ const jsonStr = text.substring(start, i + 1);
87
+ try {
88
+ return JSON.parse(jsonStr);
89
+ }
90
+ catch (err) {
91
+ throw new StructuredCallError('Failed to parse JSON from agent response', 'parse_failed', err);
92
+ }
93
+ }
94
+ }
95
+ }
96
+ throw new StructuredCallError('Incomplete JSON object in agent response', 'parse_failed');
97
+ }
98
+ };
99
+ StructuredAgentCallerService = __decorate([
100
+ injectable(),
101
+ __param(0, inject('IAgentExecutorProvider')),
102
+ __metadata("design:paramtypes", [Object])
103
+ ], StructuredAgentCallerService);
104
+ export { StructuredAgentCallerService };
@@ -1 +1 @@
1
- {"version":3,"file":"spec-initializer.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/spec/spec-initializer.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,mEAAmE,CAAC;AA4P3E,qBAAa,sBAAuB,YAAW,uBAAuB;IAC9D,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC;IA4BjC;;;OAGG;YACW,iBAAiB;CAoBhC"}
1
+ {"version":3,"file":"spec-initializer.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/spec/spec-initializer.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,mEAAmE,CAAC;AA8P3E,qBAAa,sBAAuB,YAAW,uBAAuB;IAC9D,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC;IA4BjC;;;OAGG;YACW,iBAAiB;CAoBhC"}
@@ -43,6 +43,8 @@ name: {{FEATURE_NAME}}
43
43
  number: {{NNN}}
44
44
  branch: feat/{{NNN}}-{{FEATURE_NAME}}
45
45
  oneLiner: {{DESCRIPTION}}
46
+ userQuery: >
47
+ {{DESCRIPTION}}
46
48
  summary: >
47
49
  {{DESCRIPTION}}
48
50
  phase: Analysis
@@ -1 +1 @@
1
- {"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/show.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,iBAAiB,IAAI,OAAO,CA2L3C"}
1
+ {"version":3,"file":"show.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/show.command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4L3C"}
@@ -160,6 +160,7 @@ export function createShowCommand() {
160
160
  { label: 'ID', value: feature.id },
161
161
  { label: 'Slug', value: feature.slug },
162
162
  { label: 'Description', value: feature.description },
163
+ { label: 'User Query', value: feature.userQuery },
163
164
  { label: 'Repository', value: feature.repositoryPath },
164
165
  { label: 'Branch', value: colors.accent(feature.branch) },
165
166
  { label: 'Status', value: formatStatus(feature, run) },