@superblocksteam/vite-plugin-file-sync 2.0.110-next.0 → 2.0.110-next.2

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 (76) hide show
  1. package/dist/ai-service/agent/prompts/api-prompts.d.ts.map +1 -1
  2. package/dist/ai-service/agent/prompts/api-prompts.js +28 -8
  3. package/dist/ai-service/agent/prompts/api-prompts.js.map +1 -1
  4. package/dist/ai-service/agent/tools2/tools/grep.d.ts +1 -1
  5. package/dist/ai-service/app-interface/file-system-interface.d.ts +2 -2
  6. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  7. package/dist/ai-service/chat/chat-session-store.js +20 -0
  8. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  9. package/dist/ai-service/features.d.ts +4 -0
  10. package/dist/ai-service/features.d.ts.map +1 -1
  11. package/dist/ai-service/features.js +4 -0
  12. package/dist/ai-service/features.js.map +1 -1
  13. package/dist/ai-service/llm/client.d.ts +11 -0
  14. package/dist/ai-service/llm/client.d.ts.map +1 -1
  15. package/dist/ai-service/llm/client.js +16 -2
  16. package/dist/ai-service/llm/client.js.map +1 -1
  17. package/dist/ai-service/llm/context-v2/token-tracker.d.ts +13 -0
  18. package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -1
  19. package/dist/ai-service/llm/context-v2/token-tracker.js +15 -0
  20. package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -1
  21. package/dist/ai-service/llm/impl/anthropic.d.ts.map +1 -1
  22. package/dist/ai-service/llm/impl/anthropic.js +6 -3
  23. package/dist/ai-service/llm/impl/anthropic.js.map +1 -1
  24. package/dist/ai-service/llm/stream/config.d.ts +15 -1
  25. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  26. package/dist/ai-service/llm/stream/config.js +7 -2
  27. package/dist/ai-service/llm/stream/config.js.map +1 -1
  28. package/dist/ai-service/llm/stream/orchestrator.d.ts +8 -0
  29. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  30. package/dist/ai-service/llm/stream/orchestrator.js +64 -3
  31. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  32. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
  33. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
  34. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +33 -13
  35. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
  36. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  37. package/dist/ai-service/state-machine/clark-fsm.js +8 -6
  38. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  39. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  40. package/dist/ai-service/state-machine/handlers/awaiting-user.js +83 -2
  41. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  42. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  43. package/dist/ai-service/state-machine/handlers/llm-generating.js +2 -3
  44. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  45. package/dist/ai-service/state-machine/handlers/next-steps.d.ts +15 -0
  46. package/dist/ai-service/state-machine/handlers/next-steps.d.ts.map +1 -0
  47. package/dist/ai-service/state-machine/handlers/next-steps.js +85 -0
  48. package/dist/ai-service/state-machine/handlers/next-steps.js.map +1 -0
  49. package/dist/ai-service/state-machine/helpers/peer.d.ts +16 -1
  50. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  51. package/dist/ai-service/state-machine/helpers/peer.js +23 -2
  52. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  53. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  54. package/dist/ai-service/state-machine/mocks.js +7 -1
  55. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  56. package/dist/ai-service/util/llm-config-utils.d.ts +19 -0
  57. package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -1
  58. package/dist/ai-service/util/llm-config-utils.js +78 -25
  59. package/dist/ai-service/util/llm-config-utils.js.map +1 -1
  60. package/dist/ai-service/util/stop-condition.d.ts +4 -3
  61. package/dist/ai-service/util/stop-condition.d.ts.map +1 -1
  62. package/dist/ai-service/util/stop-condition.js +7 -4
  63. package/dist/ai-service/util/stop-condition.js.map +1 -1
  64. package/dist/git-log.d.ts +10 -0
  65. package/dist/git-log.d.ts.map +1 -0
  66. package/dist/git-log.js +23 -0
  67. package/dist/git-log.js.map +1 -0
  68. package/dist/git-service/bitbucket-workflow.d.ts +6 -0
  69. package/dist/git-service/bitbucket-workflow.d.ts.map +1 -0
  70. package/dist/git-service/bitbucket-workflow.js +12 -0
  71. package/dist/git-service/bitbucket-workflow.js.map +1 -0
  72. package/dist/git-service/index.js +1 -1
  73. package/dist/socket-manager.d.ts.map +1 -1
  74. package/dist/socket-manager.js +12 -17
  75. package/dist/socket-manager.js.map +1 -1
  76. package/package.json +9 -9
@@ -44,7 +44,7 @@ export const sendInteractiveMessageChannel = (clark, chatSessionStore) => {
44
44
  };
45
45
  export const sendUserMessageChannel = (clark, chatSessionStore) => {
46
46
  const queue = peerQueue(clark);
47
- return async (payload, delay = 0, immediate = false) => {
47
+ return async (payload, delay = 0, immediate = false, { persistBeforeDeliver = false } = {}) => {
48
48
  // Generate ID upfront so both backend storage and frontend receive same ID
49
49
  const messageId = payload.id ?? crypto.randomUUID();
50
50
  const payloadWithId = { ...payload, id: messageId };
@@ -57,7 +57,28 @@ export const sendUserMessageChannel = (clark, chatSessionStore) => {
57
57
  return clark.context.peer.call.aiPushMessage(payloadWithId);
58
58
  }
59
59
  return queue(async () => {
60
- void chatSessionStore.recordAssistant(payloadWithId);
60
+ if (persistBeforeDeliver) {
61
+ // Best-effort ordering: await the server write so callers that
62
+ // `await sendUserMessage` return AFTER the record is saved. Required
63
+ // by `emitNextSteps` because the subsequent `generationCompleted`
64
+ // signal triggers a frontend force-reload that re-reads from the
65
+ // server; if the write hasn't landed yet the message is silently lost.
66
+ //
67
+ // NOT a durability guarantee: on write failure we log and still
68
+ // deliver via the peer, so the frontend may briefly see a message
69
+ // that is not persisted. Acceptable for `next_steps` because the
70
+ // feature already tolerates silent skip; callers that need true
71
+ // durability must not rely on this option.
72
+ try {
73
+ await chatSessionStore.recordAssistant(payloadWithId);
74
+ }
75
+ catch (err) {
76
+ getLogger().warn(`[ai-service] recordAssistant failed; continuing with peer delivery. type=${payloadWithId.type}`, err);
77
+ }
78
+ }
79
+ else {
80
+ void chatSessionStore.recordAssistant(payloadWithId);
81
+ }
61
82
  if (!clark.context.peer) {
62
83
  getLogger().warn(`[ai-service] Cannot send message: no peer. type=${payloadWithId.type}, state=${clark.state}`);
63
84
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,eAAO,MAAM,OAAO,QAKY,CAAC;AAgBjC,eAAO,MAAM,QAAQ,EAOL,YAAY,CAAC;AAE7B,eAAO,MAAM,SAAS,EASN,KAAK,CAAC;AAEtB,eAAO,MAAM,iBAAiB,EAyId,uBAAuB,CAAC"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,eAAO,MAAM,OAAO,QAKY,CAAC;AAgBjC,eAAO,MAAM,QAAQ,EAOL,YAAY,CAAC;AAE7B,eAAO,MAAM,SAAS,EASN,KAAK,CAAC;AAEtB,eAAO,MAAM,iBAAiB,EAiJd,uBAAuB,CAAC"}
@@ -53,6 +53,12 @@ export const mockHandlerParams = {
53
53
  },
54
54
  signals: {
55
55
  emit: vi.fn(),
56
+ once: vi
57
+ .fn()
58
+ .mockImplementation((_event, callback) => {
59
+ // Simulate checkpoint uploaded immediately (next microtask)
60
+ void Promise.resolve().then(() => callback());
61
+ }),
56
62
  },
57
63
  sourceTrackerInterface: {
58
64
  getElementToFilePathMap: vi.fn(),
@@ -146,7 +152,7 @@ export const mockHandlerParams = {
146
152
  recordAssistantChangeInfo: vi.fn(),
147
153
  getLastUserMessage: vi.fn(),
148
154
  },
149
- features: AiServiceFeatureFlags.create(),
155
+ features: AiServiceFeatureFlags.create({ "ai.suggest-whats-next": true }),
150
156
  llmProvider: {
151
157
  name: "test-provider",
152
158
  modelForTask: vi.fn().mockReturnValue(new MockLanguageModelV3({
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,25 @@ export interface LLMConfigResult {
10
10
  };
11
11
  headers: Record<string, string | undefined>;
12
12
  }
13
+ export interface ThinkingOptionsParams {
14
+ thinkingEnabled: boolean;
15
+ thinkingBudgetTokens: number;
16
+ interleavedThinking: boolean;
17
+ }
18
+ export interface ThinkingProviderOptions {
19
+ anthropic?: Record<string, any>;
20
+ bedrock?: Record<string, any>;
21
+ headers: Record<string, string | undefined>;
22
+ }
23
+ export declare function usesAdaptiveEffort(coreModel: string | undefined): boolean;
24
+ /**
25
+ * Builds the provider-specific thinking config for a given core model.
26
+ *
27
+ * This is a pure function so retries that swap models (e.g. opus-4-7 →
28
+ * sonnet-4-6 → opus-4-7) can call it per attempt to emit the shape the
29
+ * current model accepts. See {@link usesAdaptiveEffort}.
30
+ */
31
+ export declare function buildThinkingProviderOptions(coreModel: string | undefined, params: ThinkingOptionsParams): ThinkingProviderOptions;
13
32
  /**
14
33
  * Processes LLM config and returns the configuration options for AI SDK calls.
15
34
  *
@@ -1 +1 @@
1
- {"version":3,"file":"llm-config-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI/E,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,mBAAmB,GAAE,MAAa,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,CAoEjB"}
1
+ {"version":3,"file":"llm-config-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI/E,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAeD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEzE;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,uBAAuB,CAiDzB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,mBAAmB,GAAE,MAAa,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,CA4DjB"}
@@ -1,5 +1,66 @@
1
1
  import { MAX_OUTPUT_TOKENS, MODEL_CAPABILITIES, } from "@superblocksteam/library-shared/types";
2
2
  import { getLogger } from "../../util/logger.js";
3
+ const INTERLEAVED_THINKING_BETA = "interleaved-thinking-2025-05-14";
4
+ const EFFORT_BETA = "effort-2025-11-24";
5
+ /**
6
+ * Models that require Anthropic's adaptive-thinking API + `output_config.effort`.
7
+ *
8
+ * Opus 4.7 rejects `thinking: { type: "enabled" }` with a 400. We hardcode
9
+ * effort to `"high"` for these models regardless of other thinking flags —
10
+ * the legacy `budgetTokens` knob does not apply.
11
+ */
12
+ const ADAPTIVE_EFFORT_MODELS = new Set(["claude-opus-4-7"]);
13
+ const HARDCODED_EFFORT = "high";
14
+ export function usesAdaptiveEffort(coreModel) {
15
+ return coreModel !== undefined && ADAPTIVE_EFFORT_MODELS.has(coreModel);
16
+ }
17
+ /**
18
+ * Builds the provider-specific thinking config for a given core model.
19
+ *
20
+ * This is a pure function so retries that swap models (e.g. opus-4-7 →
21
+ * sonnet-4-6 → opus-4-7) can call it per attempt to emit the shape the
22
+ * current model accepts. See {@link usesAdaptiveEffort}.
23
+ */
24
+ export function buildThinkingProviderOptions(coreModel, params) {
25
+ const { thinkingEnabled, thinkingBudgetTokens, interleavedThinking } = params;
26
+ if (usesAdaptiveEffort(coreModel)) {
27
+ const anthropic = {
28
+ thinking: { type: "adaptive", display: "summarized" },
29
+ effort: HARDCODED_EFFORT,
30
+ };
31
+ const bedrockBetas = [EFFORT_BETA];
32
+ if (interleavedThinking) {
33
+ bedrockBetas.push(INTERLEAVED_THINKING_BETA);
34
+ }
35
+ const bedrock = {
36
+ additionalModelRequestFields: {
37
+ thinking: { type: "adaptive", display: "summarized" },
38
+ output_config: { effort: HARDCODED_EFFORT },
39
+ anthropic_beta: bedrockBetas,
40
+ },
41
+ };
42
+ const headers = interleavedThinking
43
+ ? { "anthropic-beta": INTERLEAVED_THINKING_BETA }
44
+ : {};
45
+ return { anthropic, bedrock, headers };
46
+ }
47
+ if (!thinkingEnabled) {
48
+ return { headers: {} };
49
+ }
50
+ const anthropic = {
51
+ thinking: { type: "enabled", budgetTokens: thinkingBudgetTokens },
52
+ };
53
+ const bedrock = {
54
+ additionalModelRequestFields: {
55
+ thinking: { type: "enabled", budget_tokens: thinkingBudgetTokens },
56
+ anthropic_beta: [INTERLEAVED_THINKING_BETA],
57
+ },
58
+ };
59
+ const headers = interleavedThinking
60
+ ? { "anthropic-beta": INTERLEAVED_THINKING_BETA }
61
+ : {};
62
+ return { anthropic, bedrock, headers };
63
+ }
3
64
  /**
4
65
  * Processes LLM config and returns the configuration options for AI SDK calls.
5
66
  *
@@ -9,17 +70,18 @@ import { getLogger } from "../../util/logger.js";
9
70
  */
10
71
  export function processLLMConfig(llmConfig, defaultBudgetTokens = 5000, logContext) {
11
72
  const logger = getLogger();
12
- // Get thinking configuration from context, with defaults
13
73
  const thinkingEnabled = llmConfig?.thinkingEnabled ?? true;
14
74
  let thinkingBudgetTokens = llmConfig?.thinkingBudgetTokens
15
75
  ? parseInt(llmConfig.thinkingBudgetTokens)
16
76
  : defaultBudgetTokens;
17
77
  const interleavedThinking = llmConfig?.interleavedThinking ?? true;
18
78
  const maxOutputTokens = MAX_OUTPUT_TOKENS;
19
- // Validate total output tokens don't exceed model limits
20
- if (thinkingEnabled) {
21
- const coreModel = llmConfig?.coreModel ?? "claude-sonnet-4-5";
22
- const modelCaps = MODEL_CAPABILITIES[coreModel];
79
+ const coreModel = llmConfig?.coreModel;
80
+ // Budget validation is only meaningful for the legacy enabled+budgetTokens
81
+ // path. Adaptive-effort models ignore budgetTokens entirely.
82
+ if (thinkingEnabled && !usesAdaptiveEffort(coreModel)) {
83
+ const modelKey = coreModel ?? "claude-sonnet-4-5";
84
+ const modelCaps = MODEL_CAPABILITIES[modelKey];
23
85
  const modelMaxOutput = modelCaps?.maxOutputTokens ?? 64_000;
24
86
  const total = maxOutputTokens + thinkingBudgetTokens;
25
87
  if (total > modelMaxOutput) {
@@ -29,38 +91,29 @@ export function processLLMConfig(llmConfig, defaultBudgetTokens = 5000, logConte
29
91
  thinkingBudgetTokens = Math.max(0, adjustedThinkingBudget);
30
92
  }
31
93
  }
32
- // Log LLM provider configuration if context is provided
33
94
  if (logContext) {
34
95
  getLogger().info(`${logContext} LLM Provider Config: provider=${llmConfig?.provider || "bedrock (default)"}, ` +
35
- `thinking=${thinkingEnabled}, budget=${thinkingBudgetTokens}, ` +
36
- `interleaved=${interleavedThinking}`);
96
+ `coreModel=${coreModel ?? "unset"}, thinking=${thinkingEnabled}, ` +
97
+ `budget=${thinkingBudgetTokens}, interleaved=${interleavedThinking}`);
37
98
  }
38
- // Build provider options and headers based on configuration
39
- const providerOptions = thinkingEnabled
99
+ const thinkingOptions = buildThinkingProviderOptions(coreModel, {
100
+ thinkingEnabled,
101
+ thinkingBudgetTokens,
102
+ interleavedThinking,
103
+ });
104
+ const providerOptions = thinkingOptions.anthropic && thinkingOptions.bedrock
40
105
  ? {
41
- anthropic: {
42
- thinking: { type: "enabled", budgetTokens: thinkingBudgetTokens },
43
- },
44
- bedrock: {
45
- additionalModelRequestFields: {
46
- thinking: { type: "enabled", budget_tokens: thinkingBudgetTokens },
47
- anthropic_beta: ["interleaved-thinking-2025-05-14"],
48
- },
49
- },
106
+ anthropic: thinkingOptions.anthropic,
107
+ bedrock: thinkingOptions.bedrock,
50
108
  }
51
109
  : undefined;
52
- const headers = thinkingEnabled && interleavedThinking
53
- ? {
54
- "anthropic-beta": "interleaved-thinking-2025-05-14",
55
- }
56
- : {};
57
110
  return {
58
111
  thinkingEnabled,
59
112
  thinkingBudgetTokens,
60
113
  interleavedThinking,
61
114
  maxOutputTokens,
62
115
  providerOptions,
63
- headers,
116
+ headers: thinkingOptions.headers,
64
117
  };
65
118
  }
66
119
  //# sourceMappingURL=llm-config-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-config-utils.js","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAcjD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAwC,EACxC,sBAA8B,IAAI,EAClC,UAAmB;IAEnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,yDAAyD;IACzD,MAAM,eAAe,GAAG,SAAS,EAAE,eAAe,IAAI,IAAI,CAAC;IAC3D,IAAI,oBAAoB,GAAG,SAAS,EAAE,oBAAoB;QACxD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC;QAC1C,CAAC,CAAC,mBAAmB,CAAC;IACxB,MAAM,mBAAmB,GAAG,SAAS,EAAE,mBAAmB,IAAI,IAAI,CAAC;IACnE,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAE1C,yDAAyD;IACzD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,mBAAmB,CAAC;QAC9D,MAAM,SAAS,GACb,kBAAkB,CAAC,SAA4C,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,SAAS,EAAE,eAAe,IAAI,MAAM,CAAC;QAC5D,MAAM,KAAK,GAAG,eAAe,GAAG,oBAAoB,CAAC;QAErD,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC3B,MAAM,sBAAsB,GAAG,cAAc,GAAG,eAAe,CAAC;YAChE,MAAM,CAAC,IAAI,CACT,oBAAoB,eAAe,uBAAuB,oBAAoB,OAAO,KAAK,GAAG;gBAC3F,sBAAsB,cAAc,iCAAiC,sBAAsB,GAAG,CACjG,CAAC;YACF,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,IAAI,CACd,GAAG,UAAU,kCAAkC,SAAS,EAAE,QAAQ,IAAI,mBAAmB,IAAI;YAC3F,YAAY,eAAe,YAAY,oBAAoB,IAAI;YAC/D,eAAe,mBAAmB,EAAE,CACvC,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,eAAe,GAAG,eAAe;QACrC,CAAC,CAAC;YACE,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE;aAClE;YACD,OAAO,EAAE;gBACP,4BAA4B,EAAE;oBAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE;oBAClE,cAAc,EAAE,CAAC,iCAAiC,CAAC;iBACpD;aACF;SACF;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GACX,eAAe,IAAI,mBAAmB;QACpC,CAAC,CAAC;YACE,gBAAgB,EAAE,iCAAiC;SACpD;QACH,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,eAAe;QACf,oBAAoB;QACpB,mBAAmB;QACnB,eAAe;QACf,eAAe;QACf,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"llm-config-utils.js","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA0BjD,MAAM,yBAAyB,GAAG,iCAAiC,CAAC;AACpE,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC5D,MAAM,gBAAgB,GAAG,MAAe,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAAC,SAA6B;IAC9D,OAAO,SAAS,KAAK,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAA6B,EAC7B,MAA6B;IAE7B,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IAE9E,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE;YACrD,MAAM,EAAE,gBAAgB;SACzB,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,mBAAmB,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,OAAO,GAAG;YACd,4BAA4B,EAAE;gBAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE;gBACrD,aAAa,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;gBAC3C,cAAc,EAAE,YAAY;aAC7B;SACF,CAAC;QAEF,MAAM,OAAO,GAAuC,mBAAmB;YACrE,CAAC,CAAC,EAAE,gBAAgB,EAAE,yBAAyB,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE;KAClE,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,4BAA4B,EAAE;YAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE;YAClE,cAAc,EAAE,CAAC,yBAAyB,CAAC;SAC5C;KACF,CAAC;IAEF,MAAM,OAAO,GAAuC,mBAAmB;QACrE,CAAC,CAAC,EAAE,gBAAgB,EAAE,yBAAyB,EAAE;QACjD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAwC,EACxC,sBAA8B,IAAI,EAClC,UAAmB;IAEnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,eAAe,GAAG,SAAS,EAAE,eAAe,IAAI,IAAI,CAAC;IAC3D,IAAI,oBAAoB,GAAG,SAAS,EAAE,oBAAoB;QACxD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC;QAC1C,CAAC,CAAC,mBAAmB,CAAC;IACxB,MAAM,mBAAmB,GAAG,SAAS,EAAE,mBAAmB,IAAI,IAAI,CAAC;IACnE,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAC1C,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;IAEvC,2EAA2E;IAC3E,6DAA6D;IAC7D,IAAI,eAAe,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,SAAS,IAAI,mBAAmB,CAAC;QAClD,MAAM,SAAS,GACb,kBAAkB,CAAC,QAA2C,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,SAAS,EAAE,eAAe,IAAI,MAAM,CAAC;QAC5D,MAAM,KAAK,GAAG,eAAe,GAAG,oBAAoB,CAAC;QAErD,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC3B,MAAM,sBAAsB,GAAG,cAAc,GAAG,eAAe,CAAC;YAChE,MAAM,CAAC,IAAI,CACT,oBAAoB,eAAe,uBAAuB,oBAAoB,OAAO,KAAK,GAAG;gBAC3F,sBAAsB,cAAc,iCAAiC,sBAAsB,GAAG,CACjG,CAAC;YACF,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,IAAI,CACd,GAAG,UAAU,kCAAkC,SAAS,EAAE,QAAQ,IAAI,mBAAmB,IAAI;YAC3F,aAAa,SAAS,IAAI,OAAO,cAAc,eAAe,IAAI;YAClE,UAAU,oBAAoB,iBAAiB,mBAAmB,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,4BAA4B,CAAC,SAAS,EAAE;QAC9D,eAAe;QACf,oBAAoB;QACpB,mBAAmB;KACpB,CAAC,CAAC;IAEH,MAAM,eAAe,GACnB,eAAe,CAAC,SAAS,IAAI,eAAe,CAAC,OAAO;QAClD,CAAC,CAAC;YACE,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,OAAO,EAAE,eAAe,CAAC,OAAO;SACjC;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,eAAe;QACf,oBAAoB;QACpB,mBAAmB;QACnB,eAAe;QACf,eAAe;QACf,OAAO,EAAE,eAAe,CAAC,OAAO;KACjC,CAAC;AACJ,CAAC"}
@@ -4,11 +4,12 @@ import type { Clark } from "../state-machine/clark-fsm.js";
4
4
  * A predicate that determines whether to stop the agent's execution based on the provided steps.
5
5
  */
6
6
  export type StopCondition<TOOLS extends ToolSet> = BaseStopCondition<TOOLS>;
7
- /** A stop condition that checks if the last step used a specific tool and got a non-error result.
8
- * (Failed tool calls don't go into the toolResults array.)
7
+ /** A stop condition that checks if the last step used a specific tool and got a successful result.
8
+ * A tool result is considered successful if it exists and its output.success is not explicitly false.
9
+ * Tools that don't return a success field are treated as successful (backwards compatibility).
9
10
  *
10
11
  * @param toolName - name of the tool to condition on
11
- * @param failureLimit - stop the loop if the tool has been called unsuccessfully
12
+ * @param maxAttempts - stop the loop if the tool has been called this many times without success
12
13
  */
13
14
  export declare function hasToolSuccess(toolName: string, maxAttempts?: number): StopCondition<any>;
14
15
  export declare function isAwaitingUser(clark: Clark): StopCondition<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"stop-condition.d.ts","sourceRoot":"","sources":["../../../src/ai-service/util/stop-condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAGtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAU,GACtB,aAAa,CAAC,GAAG,CAAC,CAcpB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAI/D;AAED,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,KAAG,aAAa,CAAC,GAAG,CAIxE,CAAC"}
1
+ {"version":3,"file":"stop-condition.d.ts","sourceRoot":"","sources":["../../../src/ai-service/util/stop-condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,IAAI,CAAC;AAGtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE5E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAU,GACtB,aAAa,CAAC,GAAG,CAAC,CAiBpB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAI/D;AAED,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,KAAG,aAAa,CAAC,GAAG,CAIxE,CAAC"}
@@ -1,13 +1,16 @@
1
1
  import { ClarkStateNames } from "../state-machine/clark-fsm.js";
2
- /** A stop condition that checks if the last step used a specific tool and got a non-error result.
3
- * (Failed tool calls don't go into the toolResults array.)
2
+ /** A stop condition that checks if the last step used a specific tool and got a successful result.
3
+ * A tool result is considered successful if it exists and its output.success is not explicitly false.
4
+ * Tools that don't return a success field are treated as successful (backwards compatibility).
4
5
  *
5
6
  * @param toolName - name of the tool to condition on
6
- * @param failureLimit - stop the loop if the tool has been called unsuccessfully
7
+ * @param maxAttempts - stop the loop if the tool has been called this many times without success
7
8
  */
8
9
  export function hasToolSuccess(toolName, maxAttempts = 5) {
9
10
  return ({ steps }) => {
10
- const hasSuccess = steps[steps.length - 1]?.toolResults?.some((toolResult) => toolResult.toolName === toolName) ?? false;
11
+ const hasSuccess = steps[steps.length - 1]?.toolResults?.some((toolResult) => toolResult.toolName === toolName &&
12
+ toolResult.output?.success !==
13
+ false) ?? false;
11
14
  if (hasSuccess) {
12
15
  return true;
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stop-condition.js","sourceRoot":"","sources":["../../../src/ai-service/util/stop-condition.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAQhE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,cAAsB,CAAC;IAEvB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACnB,MAAM,UAAU,GACd,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CACxC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CACjD,IAAI,KAAK,CAAC;QACb,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK;aACnB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;aACvC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC/D,OAAO,QAAQ,IAAI,WAAW,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,OAAO,GAAG,EAAE;QACV,OAAO,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,YAAY,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAY,EAAsB,EAAE;IAC3E,OAAO,KAAK,IAAI,EAAE;QAChB,OAAO,KAAK,CAAC,OAAO,CAAC,4BAA4B,KAAK,SAAS,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"stop-condition.js","sourceRoot":"","sources":["../../../src/ai-service/util/stop-condition.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAQhE;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,cAAsB,CAAC;IAEvB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACnB,MAAM,UAAU,GACd,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CACxC,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,QAAQ,KAAK,QAAQ;YAC/B,UAAiD,CAAC,MAAM,EAAE,OAAO;gBAChE,KAAK,CACV,IAAI,KAAK,CAAC;QACb,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK;aACnB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;aACvC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC/D,OAAO,QAAQ,IAAI,WAAW,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,OAAO,GAAG,EAAE;QACV,OAAO,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,YAAY,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAY,EAAsB,EAAE;IAC3E,OAAO,KAAK,IAAI,EAAE;QAChB,OAAO,KAAK,CAAC,OAAO,CAAC,4BAA4B,KAAK,SAAS,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type GitLogCommit = {
2
+ sha: string;
3
+ parents: string[];
4
+ message: string;
5
+ author: string;
6
+ date: string;
7
+ };
8
+ export declare const GIT_LOG_FORMAT: string;
9
+ export declare function parseGitLog(raw: string): GitLogCommit[];
10
+ //# sourceMappingURL=git-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-log.d.ts","sourceRoot":"","sources":["../src/git-log.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,eAAO,MAAM,cAAc,QAA6C,CAAC;AAEzE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBvD"}
@@ -0,0 +1,23 @@
1
+ const SEP = "<<SEP>>";
2
+ export const GIT_LOG_FORMAT = ["%H", "%P", "%s", "%an", "%aI"].join(SEP);
3
+ export function parseGitLog(raw) {
4
+ if (!raw.trim())
5
+ return [];
6
+ return raw
7
+ .trimEnd()
8
+ .split("\n")
9
+ .map((line) => {
10
+ const parts = line.split(SEP);
11
+ const parents = (parts[1] ?? "")
12
+ .split(" ")
13
+ .filter((sha) => sha.length > 0);
14
+ return {
15
+ sha: parts[0] ?? "",
16
+ parents,
17
+ message: parts[2] ?? "",
18
+ author: parts[3] ?? "",
19
+ date: parts[4] ?? "",
20
+ };
21
+ });
22
+ }
23
+ //# sourceMappingURL=git-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-log.js","sourceRoot":"","sources":["../src/git-log.ts"],"names":[],"mappings":"AAQA,MAAM,GAAG,GAAG,SAAS,CAAC;AAEtB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEzE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,GAAG;SACP,OAAO,EAAE;SACT,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC7B,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACnB,OAAO;YACP,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACtB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;SACrB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { GitService } from "./index.js";
2
+ export declare const BITBUCKET_PIPELINE_PATH = "bitbucket-pipelines.yml";
3
+ export declare function ensureBitbucketWorkflowFile(gitService: GitService, superblocksBaseUrl?: string): Promise<{
4
+ created: boolean;
5
+ }>;
6
+ //# sourceMappingURL=bitbucket-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitbucket-workflow.d.ts","sourceRoot":"","sources":["../../src/git-service/bitbucket-workflow.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAY/B"}
@@ -0,0 +1,12 @@
1
+ import { buildBitbucketSuperblocksSyncPipelineFromBaseUrl, isBitbucketRemoteUrl, } from "@superblocksteam/shared";
2
+ import { ensureWorkflowFile } from "./ensure-workflow-file.js";
3
+ export const BITBUCKET_PIPELINE_PATH = "bitbucket-pipelines.yml";
4
+ export function ensureBitbucketWorkflowFile(gitService, superblocksBaseUrl) {
5
+ return ensureWorkflowFile(gitService, {
6
+ providerName: "bitbucket",
7
+ workflowPath: BITBUCKET_PIPELINE_PATH,
8
+ isProviderRemoteUrl: isBitbucketRemoteUrl,
9
+ buildWorkflowFromBaseUrl: buildBitbucketSuperblocksSyncPipelineFromBaseUrl,
10
+ }, superblocksBaseUrl);
11
+ }
12
+ //# sourceMappingURL=bitbucket-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitbucket-workflow.js","sourceRoot":"","sources":["../../src/git-service/bitbucket-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gDAAgD,EAChD,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAEjE,MAAM,UAAU,2BAA2B,CACzC,UAAsB,EACtB,kBAA2B;IAE3B,OAAO,kBAAkB,CACvB,UAAU,EACV;QACE,YAAY,EAAE,WAAW;QACzB,YAAY,EAAE,uBAAuB;QACrC,mBAAmB,EAAE,oBAAoB;QACzC,wBAAwB,EACtB,gDAAgD;KACnD,EACD,kBAAkB,CACnB,CAAC;AACJ,CAAC"}
@@ -113,7 +113,7 @@ export function createGitService(cwd) {
113
113
  await git.checkout(branch);
114
114
  }
115
115
  catch {
116
- const args = ["-b", branch];
116
+ const args = ["-B", branch];
117
117
  if (startPoint)
118
118
  args.push(startPoint);
119
119
  await git.checkout(args);
@@ -1 +1 @@
1
- {"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../src/socket-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,OAAO,KAAK,EAGV,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAK3D,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzD,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAOF,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,iBAIjD;AAED,wBAAgB,oBAAoB,SAGnC;AAED,cAAM,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACjE,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwB;gBAE7B,MAAM,EAAE,MAAM;IAI1B,OAAO,CAAC,YAAY,CAA8B;IAClD,iBAAiB,CAAC,EAChB,MAAM,EACN,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,kBAAkB,GACnB,EAAE;QACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,eAAe,EAAE,iBAAiB,CAAC;QACnC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QAC3D,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;IA6xCD,iBAAiB,CACf,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOnE,kBAAkB,CAChB,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOpE,mBAAmB;IAInB,gBAAgB,IAAI,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAIhE,eAAe;IASf,OAAO;CAGR"}
1
+ {"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../src/socket-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,OAAO,KAAK,EAGV,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAK3D,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzD,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAOF,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,iBAIjD;AAED,wBAAgB,oBAAoB,SAGnC;AAED,cAAM,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACjE,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwB;gBAE7B,MAAM,EAAE,MAAM;IAI1B,OAAO,CAAC,YAAY,CAA8B;IAClD,iBAAiB,CAAC,EAChB,MAAM,EACN,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,kBAAkB,GACnB,EAAE;QACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,eAAe,EAAE,iBAAiB,CAAC;QACnC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QAC3D,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B;IA6xCD,iBAAiB,CACf,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOnE,kBAAkB,CAChB,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOpE,mBAAmB;IAInB,gBAAgB,IAAI,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAIhE,eAAe;IASf,OAAO;CAGR"}
@@ -5,8 +5,10 @@ import { WebSocketServer } from "ws";
5
5
  import { createISocketClient, DEFAULT_NON_GIT_BRANCH, SUPERBLOCKS_LIVE_GIT_BRANCH, TracedEventEmitter, TracedSocket, } from "@superblocksteam/shared";
6
6
  import { uploadContextToBucketeer } from "./ai-service/context-upload.js";
7
7
  import { createSocketRecordingMiddleware } from "./ai-service/recording/recorders/socket-recorder.js";
8
+ import { GIT_LOG_FORMAT, parseGitLog } from "./git-log.js";
8
9
  import { GIT_OPERATION_BUSY_MESSAGE, } from "./git-operation-lock.js";
9
10
  import { ensureAzureDevOpsWorkflowFile } from "./git-service/azure-devops-workflow.js";
11
+ import { ensureBitbucketWorkflowFile } from "./git-service/bitbucket-workflow.js";
10
12
  import { ensureGithubWorkflowFile } from "./git-service/github-workflow.js";
11
13
  import { ensureGitlabWorkflowFile } from "./git-service/gitlab-workflow.js";
12
14
  import { GitConflictError } from "./git-service/index.js";
@@ -467,6 +469,14 @@ class SocketManager extends TracedEventEmitter {
467
469
  ...getErrorMeta(error),
468
470
  });
469
471
  });
472
+ await ensureBitbucketWorkflowFile(readyGitService, resolvedBaseUrl).catch((error) => {
473
+ getLogger().warn("[git] gitCommitLocal failed to ensure Bitbucket workflow file", {
474
+ gitCategory: "setup",
475
+ gitOperation: "ensure-bitbucket-workflow-file",
476
+ gitOutcome: "failed",
477
+ ...getErrorMeta(error),
478
+ });
479
+ });
470
480
  await readyGitService.add(".");
471
481
  const result = await readyGitService.commit(request.message);
472
482
  return { sha: result.commit };
@@ -829,29 +839,14 @@ class SocketManager extends TracedEventEmitter {
829
839
  });
830
840
  }
831
841
  }
832
- const SEP = "<<SEP>>";
833
- const format = ["%H", "%s", "%an", "%aI"].join(SEP);
834
842
  const raw = await readyGitService.raw([
835
843
  "log",
836
844
  logRef,
837
- `--format=${format}`,
845
+ `--format=${GIT_LOG_FORMAT}`,
838
846
  `-n`,
839
847
  String(limit),
840
848
  ]);
841
- if (!raw.trim())
842
- return [];
843
- return raw
844
- .trimEnd()
845
- .split("\n")
846
- .map((line) => {
847
- const parts = line.split(SEP);
848
- return {
849
- sha: parts[0] ?? "",
850
- message: parts[1] ?? "",
851
- author: parts[2] ?? "",
852
- date: parts[3] ?? "",
853
- };
854
- });
849
+ return parseGitLog(raw);
855
850
  },
856
851
  ],
857
852
  gitPrepareMainCommit: [