spec-cat 0.1.70 → 0.1.72

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 (48) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/builds/latest.json +1 -1
  3. package/.output/public/_nuxt/builds/meta/5c9166a3-8293-4b7f-91bb-8db64fbff540.json +1 -0
  4. package/.output/server/chunks/_/aiProviderSelection.mjs +2 -2
  5. package/.output/server/chunks/_/chatGit.mjs +1 -1
  6. package/.output/server/chunks/_/git.mjs +1 -1
  7. package/.output/server/chunks/_/interactiveProviderQuery.mjs +127 -2
  8. package/.output/server/chunks/_/interactiveProviderQuery.mjs.map +1 -1
  9. package/.output/server/chunks/_/jobQueue.mjs +1 -1
  10. package/.output/server/chunks/_/terminalSessions.mjs +1 -1
  11. package/.output/server/chunks/_/worktreeSetup.mjs +1 -1
  12. package/.output/server/chunks/nitro/nitro.mjs +489 -489
  13. package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs +28 -7
  14. package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs.map +1 -1
  15. package/.output/server/chunks/routes/api/chat/worktree.post.mjs +1 -1
  16. package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs +1 -1
  17. package/.output/server/chunks/routes/api/conversations/archives/_archiveId/restore.post.mjs +1 -1
  18. package/.output/server/chunks/routes/api/conversations/archives/_archiveId_.delete.mjs +1 -1
  19. package/.output/server/chunks/routes/api/conversations/archives.delete.mjs +1 -1
  20. package/.output/server/chunks/routes/api/conversations/archives.get.mjs +1 -1
  21. package/.output/server/chunks/routes/api/conversations/update.post.mjs +1 -1
  22. package/.output/server/chunks/routes/api/conversations.get.mjs +1 -1
  23. package/.output/server/chunks/routes/api/git/branches.get.mjs +1 -1
  24. package/.output/server/chunks/routes/api/git/checkout.post.mjs +1 -1
  25. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +1 -1
  26. package/.output/server/chunks/routes/api/git/graph.get.mjs +1 -1
  27. package/.output/server/chunks/routes/api/git/log.get.mjs +1 -1
  28. package/.output/server/chunks/routes/api/git/merge-base.get.mjs +1 -1
  29. package/.output/server/chunks/routes/api/git/status.get.mjs +1 -1
  30. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +1 -1
  31. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  32. package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
  33. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +1 -1
  34. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +1 -1
  35. package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs +1 -1
  36. package/.output/server/chunks/routes/api/repository/status.get.mjs +1 -1
  37. package/.output/server/chunks/routes/api/settings.get.mjs +2 -2
  38. package/.output/server/chunks/routes/api/settings.post.mjs +2 -2
  39. package/.output/server/chunks/routes/api/skills/_skillId/prompt.post.mjs +1 -1
  40. package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.get.mjs +1 -1
  41. package/.output/server/chunks/routes/api/specs/_featureId/_...filename_.put.mjs +1 -1
  42. package/.output/server/chunks/routes/api/specs/traceability/_featureId_.get.mjs +1 -1
  43. package/.output/server/chunks/routes/api/worktrees/_name/switch.post.mjs +1 -1
  44. package/.output/server/chunks/routes/api/worktrees/_name_.delete.mjs +1 -1
  45. package/.output/server/chunks/routes/terminal-ws.mjs +1 -1
  46. package/.output/server/package.json +1 -1
  47. package/package.json +1 -1
  48. package/.output/public/_nuxt/builds/meta/94b39ab8-be36-47aa-8646-e1f9c2796cb8.json +0 -1
@@ -1,9 +1,9 @@
1
- import { d as defineEventHandler, r as readBody, c as createError, a as getProjectDir, b as resolveExistingBaseBranch, l as logger } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as readBody, c as createError, a as getProjectDir, b as resolveExistingBaseBranch, l as logger, f as readConversationFromStorage } from '../../../nitro/nitro.mjs';
2
2
  import { execFile } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { existsSync } from 'node:fs';
5
5
  import { q as queryInteractiveProvider } from '../../../_/interactiveProviderQuery.mjs';
6
- import { g as guardServerProviderCapability } from '../../../_/aiProviderSelection.mjs';
6
+ import { g as guardServerProviderCapability, r as resolveServerProviderSelection, a as guardProviderCapability } from '../../../_/aiProviderSelection.mjs';
7
7
  import { g as getChatWorktreePath } from '../../../_/worktreePaths.mjs';
8
8
  import { v as validateWorktreePath } from '../../../_/validateWorktree.mjs';
9
9
  import 'node:http';
@@ -38,6 +38,30 @@ async function git(cwd, args) {
38
38
  const { stdout } = await execFileAsync("git", args, { cwd });
39
39
  return stdout.trim();
40
40
  }
41
+ function readNonEmptyString(record, key) {
42
+ if (!record || typeof record !== "object") return "";
43
+ const value = record[key];
44
+ return typeof value === "string" && value.length > 0 ? value : "";
45
+ }
46
+ async function guardConversationProviderCapability(conversationId) {
47
+ const conversation = await readConversationFromStorage(conversationId);
48
+ const providerId = readNonEmptyString(conversation, "providerId");
49
+ if (!providerId) {
50
+ return guardServerProviderCapability(
51
+ "autoCommit",
52
+ "Switch to a provider with auto-commit support or disable AI-generated commit messages."
53
+ );
54
+ }
55
+ const selection = await resolveServerProviderSelection({
56
+ providerId,
57
+ modelKey: readNonEmptyString(conversation, "providerModelKey")
58
+ });
59
+ return guardProviderCapability(
60
+ selection,
61
+ "autoCommit",
62
+ "Switch to a provider with auto-commit support or disable AI-generated commit messages."
63
+ );
64
+ }
41
65
  const generateCommitMessage_post = defineEventHandler(async (event) => {
42
66
  var _a;
43
67
  const body = await readBody(event);
@@ -56,10 +80,7 @@ const generateCommitMessage_post = defineEventHandler(async (event) => {
56
80
  throw createError({ statusCode: 404, message: "Worktree not found" });
57
81
  }
58
82
  validateWorktreePath(worktreePath);
59
- const providerGuard = await guardServerProviderCapability(
60
- "autoCommit",
61
- "Switch to a provider with auto-commit support or disable AI-generated commit messages."
62
- );
83
+ const providerGuard = await guardConversationProviderCapability(conversationId);
63
84
  if ("failure" in providerGuard) {
64
85
  return providerGuard.failure;
65
86
  }
@@ -88,7 +109,7 @@ const generateCommitMessage_post = defineEventHandler(async (event) => {
88
109
  }
89
110
  const diffStat = await git(worktreePath, ["diff", "--stat", range]);
90
111
  const flatten = (value) => value.replace(/\s*\n\s*/g, " | ").trim();
91
- const prompt = `Write a single concise squash git commit message summarizing the work on branch "${worktreeBranch || "(unknown)"}" (base "${baseBranch}"). Commits: ${flatten(log)}. File changes: ${flatten(diffStat)}. Use conventional commit format (feat/fix/refactor/docs/chore). First line max 72 chars, no emoji. Add a short body of 2-3 lines only if the changes are complex. Output only the commit message.`;
112
+ const prompt = `Write a single concise squash git commit message summarizing the work on branch "${worktreeBranch || "(unknown)"}" (base "${baseBranch}"). Commits: ${flatten(log)}. File changes: ${flatten(diffStat)}. Use conventional commit format (feat/fix/refactor/docs/chore). First line max 72 chars, no emoji. Add a short body of 2-3 lines only if the changes are complex. Use only the supplied commit list and file changes. Do not inspect files, run commands, or use tools. Output only the commit message.`;
92
113
  const result = await queryInteractiveProvider({
93
114
  conversationId,
94
115
  cwd: worktreePath,
@@ -1 +1 @@
1
- {"version":3,"file":"generate-commit-message.post.mjs","sources":["../../../../../../server/api/chat/generate-commit-message.post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-commit-message.post.mjs","sources":["../../../../../../server/api/chat/generate-commit-message.post.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, r as readBody, c as createError, a as getProjectDir, l as logger, f as resolvePreferredBaseBranch } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as readBody, c as createError, a as getProjectDir, l as logger, h as resolvePreferredBaseBranch } from '../../../nitro/nitro.mjs';
2
2
  import { execFile } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { g as getChatWorktreePath } from '../../../_/worktreePaths.mjs';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, h as readConversationStorageState, a as getProjectDir, l as logger, j as generateArchivedConversationId, w as writeConversationStorageState } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, i as readConversationStorageState, a as getProjectDir, l as logger, k as generateArchivedConversationId, w as writeConversationStorageState } from '../../../../nitro/nitro.mjs';
2
2
  import { exec } from 'node:child_process';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { rm } from 'node:fs/promises';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, r as readBody, c as createError, h as readConversationStorageState, a as getProjectDir, k as generateConversationId, f as resolvePreferredBaseBranch, l as logger, w as writeConversationStorageState } from '../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, r as readBody, c as createError, i as readConversationStorageState, a as getProjectDir, m as generateConversationId, h as resolvePreferredBaseBranch, l as logger, w as writeConversationStorageState } from '../../../../../nitro/nitro.mjs';
2
2
  import { exec } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { g as getChatWorktreePath } from '../../../../../_/worktreePaths.mjs';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, h as readConversationStorageState, w as writeConversationStorageState } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, i as readConversationStorageState, w as writeConversationStorageState } from '../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, h as readConversationStorageState, w as writeConversationStorageState } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, i as readConversationStorageState, w as writeConversationStorageState } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, h as readConversationStorageState, g as getQuery } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, i as readConversationStorageState, g as getQuery } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, r as readBody, c as createError, m as isValidConversation, u as upsertConversationInStorage, S as STORAGE_VERSION } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as readBody, c as createError, n as isValidConversation, u as upsertConversationInStorage, S as STORAGE_VERSION } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, h as readConversationStorageState } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, i as readConversationStorageState } from '../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, g as getQuery, n as execGitCommand, f as resolvePreferredBaseBranch } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, g as getQuery, o as execGitCommand, h as resolvePreferredBaseBranch } from '../../../nitro/nitro.mjs';
2
2
  import { g as generateBranchColor, a as getBranches } from '../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, c as createError, o as execGit, l as logger } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, c as createError, p as execGit, l as logger } from '../../../nitro/nitro.mjs';
2
2
  import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
3
  import 'node:http';
4
4
  import 'node:https';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
2
2
  import { b as getCommitDetail } from '../../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, g as getQuery, c as createError, n as execGitCommand } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, g as getQuery, c as createError, o as execGitCommand } from '../../../nitro/nitro.mjs';
2
2
  import { e as getCommitHistory, g as generateBranchColor } from '../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, g as getQuery, o as execGit, l as logger } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, g as getQuery, p as execGit, l as logger } from '../../../nitro/nitro.mjs';
2
2
  import { G as GRAPH_CONSTANTS, f as getBranchesSync, h as getTags, j as parseGitLog, g as generateBranchColor } from '../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, g as getQuery, c as createError, n as execGitCommand } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, g as getQuery, c as createError, o as execGitCommand } from '../../../nitro/nitro.mjs';
2
2
  import { k as getMergeBase } from '../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, o as execGit } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, p as execGit } from '../../../nitro/nitro.mjs';
2
2
  import { p as parseGitStatusPorcelain } from '../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
2
2
  import { J as getTagDetail } from '../../../../_/git.mjs';
3
3
  import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../../_/gitApiHelpers.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, r as readBody, c as createError, k as generateConversationId, a as getProjectDir, v as isUsableBaseBranchName, f as resolvePreferredBaseBranch, n as execGitCommand, q as readConversationFromStorage, x as sanitizeConversationTitle, y as generateConversationTitle, u as upsertConversationInStorage, S as STORAGE_VERSION } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as readBody, c as createError, m as generateConversationId, a as getProjectDir, v as isUsableBaseBranchName, h as resolvePreferredBaseBranch, o as execGitCommand, f as readConversationFromStorage, x as sanitizeConversationTitle, y as generateConversationTitle, u as upsertConversationInStorage, S as STORAGE_VERSION } from '../../nitro/nitro.mjs';
2
2
  import { j as jobQueue } from '../../_/jobQueue.mjs';
3
3
  import { s as startPersisting } from '../../_/jobPersister.mjs';
4
4
  import { g as getChatWorktreePath } from '../../_/worktreePaths.mjs';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, g as getQuery, a as getProjectDir, r as readBody, c as createError, l as logger, f as resolvePreferredBaseBranch } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, g as getQuery, a as getProjectDir, r as readBody, c as createError, l as logger, h as resolvePreferredBaseBranch } from '../../nitro/nitro.mjs';
2
2
  import { exec } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { existsSync } from 'node:fs';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
2
2
  import { j as jobQueue } from '../../../../_/jobQueue.mjs';
3
3
  import 'node:http';
4
4
  import 'node:https';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, g as getQuery } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, g as getQuery } from '../../../nitro/nitro.mjs';
2
2
  import { j as jobQueue } from '../../../_/jobQueue.mjs';
3
3
  import 'node:http';
4
4
  import 'node:https';
@@ -1,6 +1,6 @@
1
1
  import { d as defineEventHandler, r as readBody, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
2
  import { v as validateWorktreePath, a as validateFilePath } from '../../../_/validateWorktree.mjs';
3
- import { a as getServerProviderSelection } from '../../../_/aiProviderSelection.mjs';
3
+ import { b as getServerProviderSelection } from '../../../_/aiProviderSelection.mjs';
4
4
  import { e as ensureProvidersInitialized, g as getProvider } from '../../../_/aiProviderRegistry.mjs';
5
5
  import { q as queryInteractiveProvider } from '../../../_/interactiveProviderQuery.mjs';
6
6
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, a as getProjectDir, c as createError, n as execGitCommand } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, a as getProjectDir, c as createError, o as execGitCommand } from '../../../nitro/nitro.mjs';
2
2
  import { K as isGitRepository } from '../../../_/git.mjs';
3
3
  import 'node:http';
4
4
  import 'node:https';
@@ -1,5 +1,5 @@
1
- import { d as defineEventHandler, p as readSpecCatStore } from '../../nitro/nitro.mjs';
2
- import { r as resolveServerProviderSelection, D as DEFAULT_MODEL_KEY, b as DEFAULT_PROVIDER_ID } from '../../_/aiProviderSelection.mjs';
1
+ import { d as defineEventHandler, q as readSpecCatStore } from '../../nitro/nitro.mjs';
2
+ import { r as resolveServerProviderSelection, D as DEFAULT_MODEL_KEY, c as DEFAULT_PROVIDER_ID } from '../../_/aiProviderSelection.mjs';
3
3
  import 'node:http';
4
4
  import 'node:https';
5
5
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
- import { d as defineEventHandler, r as readBody, c as createError, p as readSpecCatStore, C as writeSpecCatStore } from '../../nitro/nitro.mjs';
2
- import { r as resolveServerProviderSelection, b as DEFAULT_PROVIDER_ID } from '../../_/aiProviderSelection.mjs';
1
+ import { d as defineEventHandler, r as readBody, c as createError, q as readSpecCatStore, C as writeSpecCatStore } from '../../nitro/nitro.mjs';
2
+ import { r as resolveServerProviderSelection, c as DEFAULT_PROVIDER_ID } from '../../_/aiProviderSelection.mjs';
3
3
  import 'node:http';
4
4
  import 'node:https';
5
5
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, r as readBody, a as getProjectDir } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, r as readBody, a as getProjectDir } from '../../../../nitro/nitro.mjs';
2
2
  import { readdir } from 'node:fs/promises';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { resolve, join } from 'node:path';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, a as getProjectDir } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, a as getProjectDir } from '../../../../nitro/nitro.mjs';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, r as readBody, a as getProjectDir } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, r as readBody, a as getProjectDir } from '../../../../nitro/nitro.mjs';
2
2
  import { writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, c as createError, a as getProjectDir } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, c as createError, a as getProjectDir } from '../../../../nitro/nitro.mjs';
2
2
  import { join } from 'node:path';
3
3
  import { b as buildTraceabilityResponse } from '../../../../_/traceability.mjs';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, g as getQuery, a as getProjectDir, c as createError, l as logger } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, g as getQuery, a as getProjectDir, c as createError, l as logger } from '../../../../nitro/nitro.mjs';
2
2
  import { exec } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import 'node:http';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, i as getRouterParam, g as getQuery, a as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, j as getRouterParam, g as getQuery, a as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
2
  import { exec } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { existsSync } from 'node:fs';
@@ -1,4 +1,4 @@
1
- import { J as defineWebSocketHandler, q as readConversationFromStorage, s as updateConversationProviderSessionInStorage } from '../nitro/nitro.mjs';
1
+ import { J as defineWebSocketHandler, f as readConversationFromStorage, s as updateConversationProviderSessionInStorage } from '../nitro/nitro.mjs';
2
2
  import { w as writeTerminalInput, r as resizeTerminal, a as getOrCreateTerminalSession, s as subscribeTerminalSession, c as getTerminalSession, b as buildTerminalSessionId } from '../_/terminalSessions.mjs';
3
3
  import { s as setupConversationWorktree } from '../_/worktreeSetup.mjs';
4
4
  import { i as isSpecCatWorktreePath } from '../_/worktreePaths.mjs';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-cat-prod",
3
- "version": "0.1.70",
3
+ "version": "0.1.72",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-cat",
3
- "version": "0.1.70",
3
+ "version": "0.1.72",
4
4
  "description": "Spec-driven development workbench",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- {"id":"94b39ab8-be36-47aa-8646-e1f9c2796cb8","timestamp":1783332862160,"prerendered":[]}