@iloom/cli 0.5.5 → 0.6.1

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 (97) hide show
  1. package/README.md +100 -4
  2. package/dist/{ClaudeContextManager-7WX7DUNI.js → ClaudeContextManager-6J2EB4QU.js} +4 -4
  3. package/dist/{ClaudeService-LQLN2GP4.js → ClaudeService-O2PB22GX.js} +3 -3
  4. package/dist/{LoomLauncher-5QU42LOM.js → LoomLauncher-5LFM4LXB.js} +4 -4
  5. package/dist/{PRManager-OCSB2HPT.js → PRManager-GB3FOJ2W.js} +2 -2
  6. package/dist/ProjectCapabilityDetector-S5FLNCFI.js +11 -0
  7. package/dist/{PromptTemplateManager-5GNF7FCP.js → PromptTemplateManager-C3DK6XZL.js} +2 -2
  8. package/dist/README.md +100 -4
  9. package/dist/agents/iloom-framework-detector.md +366 -0
  10. package/dist/agents/iloom-issue-analyze-and-plan.md +0 -10
  11. package/dist/agents/iloom-issue-implementer.md +1 -1
  12. package/dist/agents/iloom-issue-planner.md +0 -10
  13. package/dist/build-FJVYP7EV.js +27 -0
  14. package/dist/build-FJVYP7EV.js.map +1 -0
  15. package/dist/{chunk-WIJWIKAN.js → chunk-2A7WQKBE.js} +10 -2
  16. package/dist/{chunk-WIJWIKAN.js.map → chunk-2A7WQKBE.js.map} +1 -1
  17. package/dist/{chunk-SHVB3EFE.js → chunk-64O2UIWO.js} +44 -19
  18. package/dist/chunk-64O2UIWO.js.map +1 -0
  19. package/dist/{chunk-FO2H3YXI.js → chunk-6U6VI4SZ.js} +2 -2
  20. package/dist/{chunk-VXMY22TP.js → chunk-7WANFUIK.js} +2 -2
  21. package/dist/{chunk-LVLRMP7V.js → chunk-AXX3QIKK.js} +58 -14
  22. package/dist/chunk-AXX3QIKK.js.map +1 -0
  23. package/dist/chunk-BXCPJJYM.js +133 -0
  24. package/dist/chunk-BXCPJJYM.js.map +1 -0
  25. package/dist/{chunk-46JVEGUW.js → chunk-I75JMBNB.js} +14 -16
  26. package/dist/chunk-I75JMBNB.js.map +1 -0
  27. package/dist/{chunk-SJIMVKK7.js → chunk-K7SEEHKO.js} +2 -2
  28. package/dist/{chunk-WZHBRKLN.js → chunk-LVBRMTE6.js} +39 -56
  29. package/dist/chunk-LVBRMTE6.js.map +1 -0
  30. package/dist/{chunk-NKRQNER7.js → chunk-Q7POFB5Q.js} +1 -55
  31. package/dist/chunk-Q7POFB5Q.js.map +1 -0
  32. package/dist/{chunk-N4ZJVATC.js → chunk-SN3Z6EZO.js} +11 -7
  33. package/dist/chunk-SN3Z6EZO.js.map +1 -0
  34. package/dist/chunk-TRQ76ISK.js +159 -0
  35. package/dist/chunk-TRQ76ISK.js.map +1 -0
  36. package/dist/{chunk-5IWU3HXE.js → chunk-VDA5JMB4.js} +3 -4
  37. package/dist/{chunk-5IWU3HXE.js.map → chunk-VDA5JMB4.js.map} +1 -1
  38. package/dist/{chunk-K5G5SFWY.js → chunk-W6WVRHJ6.js} +13 -1
  39. package/dist/chunk-W6WVRHJ6.js.map +1 -0
  40. package/dist/{chunk-EBISESAP.js → chunk-ZPSTA5PR.js} +16 -6
  41. package/dist/chunk-ZPSTA5PR.js.map +1 -0
  42. package/dist/{cleanup-WTZZ74VS.js → cleanup-BRUAINKE.js} +6 -6
  43. package/dist/cli.js +268 -65
  44. package/dist/cli.js.map +1 -1
  45. package/dist/compile-ULNO5F7Q.js +57 -0
  46. package/dist/compile-ULNO5F7Q.js.map +1 -0
  47. package/dist/{contribute-T7ENST5N.js → contribute-Q6GX6AXK.js} +95 -27
  48. package/dist/contribute-Q6GX6AXK.js.map +1 -0
  49. package/dist/{dev-server-S5QG5SBZ.js → dev-server-4RCDJ5MU.js} +5 -5
  50. package/dist/{feedback-PDMCKYOT.js → feedback-O4Q55SVS.js} +7 -7
  51. package/dist/{ignite-YF4Q5RA7.js → ignite-VHV65WEZ.js} +9 -5
  52. package/dist/ignite-VHV65WEZ.js.map +1 -0
  53. package/dist/index.d.ts +2 -0
  54. package/dist/index.js +12 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/{init-XQQGC6DN.js → init-UTYRHNJJ.js} +5 -4
  57. package/dist/lint-5JMCWE4Y.js +27 -0
  58. package/dist/lint-5JMCWE4Y.js.map +1 -0
  59. package/dist/{open-AIZG5756.js → open-WHVUYGPY.js} +5 -5
  60. package/dist/prompts/init-prompt.txt +101 -8
  61. package/dist/prompts/issue-prompt.txt +12 -12
  62. package/dist/{rebase-5EY3Q6XP.js → rebase-Y4AS6LQW.js} +2 -2
  63. package/dist/{run-CMZUYZVG.js → run-NCRK5NPR.js} +5 -5
  64. package/dist/{summary-5YXUGPRN.js → summary-CVFAMDOJ.js} +3 -3
  65. package/dist/test-3KIVXI6J.js +27 -0
  66. package/dist/test-3KIVXI6J.js.map +1 -0
  67. package/package.json +1 -1
  68. package/dist/ProjectCapabilityDetector-34LU7JJ4.js +0 -9
  69. package/dist/chunk-2ZPFJQ3B.js +0 -63
  70. package/dist/chunk-2ZPFJQ3B.js.map +0 -1
  71. package/dist/chunk-46JVEGUW.js.map +0 -1
  72. package/dist/chunk-EBISESAP.js.map +0 -1
  73. package/dist/chunk-K5G5SFWY.js.map +0 -1
  74. package/dist/chunk-LVLRMP7V.js.map +0 -1
  75. package/dist/chunk-N4ZJVATC.js.map +0 -1
  76. package/dist/chunk-NKRQNER7.js.map +0 -1
  77. package/dist/chunk-SHVB3EFE.js.map +0 -1
  78. package/dist/chunk-WZHBRKLN.js.map +0 -1
  79. package/dist/contribute-T7ENST5N.js.map +0 -1
  80. package/dist/ignite-YF4Q5RA7.js.map +0 -1
  81. /package/dist/{ClaudeContextManager-7WX7DUNI.js.map → ClaudeContextManager-6J2EB4QU.js.map} +0 -0
  82. /package/dist/{ClaudeService-LQLN2GP4.js.map → ClaudeService-O2PB22GX.js.map} +0 -0
  83. /package/dist/{LoomLauncher-5QU42LOM.js.map → LoomLauncher-5LFM4LXB.js.map} +0 -0
  84. /package/dist/{PRManager-OCSB2HPT.js.map → PRManager-GB3FOJ2W.js.map} +0 -0
  85. /package/dist/{ProjectCapabilityDetector-34LU7JJ4.js.map → ProjectCapabilityDetector-S5FLNCFI.js.map} +0 -0
  86. /package/dist/{PromptTemplateManager-5GNF7FCP.js.map → PromptTemplateManager-C3DK6XZL.js.map} +0 -0
  87. /package/dist/{chunk-FO2H3YXI.js.map → chunk-6U6VI4SZ.js.map} +0 -0
  88. /package/dist/{chunk-VXMY22TP.js.map → chunk-7WANFUIK.js.map} +0 -0
  89. /package/dist/{chunk-SJIMVKK7.js.map → chunk-K7SEEHKO.js.map} +0 -0
  90. /package/dist/{cleanup-WTZZ74VS.js.map → cleanup-BRUAINKE.js.map} +0 -0
  91. /package/dist/{dev-server-S5QG5SBZ.js.map → dev-server-4RCDJ5MU.js.map} +0 -0
  92. /package/dist/{feedback-PDMCKYOT.js.map → feedback-O4Q55SVS.js.map} +0 -0
  93. /package/dist/{init-XQQGC6DN.js.map → init-UTYRHNJJ.js.map} +0 -0
  94. /package/dist/{open-AIZG5756.js.map → open-WHVUYGPY.js.map} +0 -0
  95. /package/dist/{rebase-5EY3Q6XP.js.map → rebase-Y4AS6LQW.js.map} +0 -0
  96. /package/dist/{run-CMZUYZVG.js.map → run-NCRK5NPR.js.map} +0 -0
  97. /package/dist/{summary-5YXUGPRN.js.map → summary-CVFAMDOJ.js.map} +0 -0
@@ -222,6 +222,18 @@ var PromptTemplateManager = class {
222
222
  } else {
223
223
  result = result.replace(standardIssueModeRegex, "");
224
224
  }
225
+ const hasPackageJsonRegex = /\{\{#IF HAS_PACKAGE_JSON\}\}(.*?)\{\{\/IF HAS_PACKAGE_JSON\}\}/gs;
226
+ if (variables.HAS_PACKAGE_JSON === true) {
227
+ result = result.replace(hasPackageJsonRegex, "$1");
228
+ } else {
229
+ result = result.replace(hasPackageJsonRegex, "");
230
+ }
231
+ const noPackageJsonRegex = /\{\{#IF NO_PACKAGE_JSON\}\}(.*?)\{\{\/IF NO_PACKAGE_JSON\}\}/gs;
232
+ if (variables.NO_PACKAGE_JSON === true) {
233
+ result = result.replace(noPackageJsonRegex, "$1");
234
+ } else {
235
+ result = result.replace(noPackageJsonRegex, "");
236
+ }
225
237
  return result;
226
238
  }
227
239
  /**
@@ -236,4 +248,4 @@ var PromptTemplateManager = class {
236
248
  export {
237
249
  PromptTemplateManager
238
250
  };
239
- //# sourceMappingURL=chunk-K5G5SFWY.js.map
251
+ //# sourceMappingURL=chunk-W6WVRHJ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/PromptTemplateManager.ts"],"sourcesContent":["import { readFile } from 'fs/promises'\nimport { accessSync } from 'fs'\nimport path from 'path'\nimport { fileURLToPath } from 'url'\nimport { logger } from '../utils/logger.js'\n\nexport interface TemplateVariables {\n\tISSUE_NUMBER?: string | number\n\tPR_NUMBER?: number\n\tISSUE_TITLE?: string\n\tPR_TITLE?: string\n\tWORKSPACE_PATH?: string\n\tPORT?: number\n\tONE_SHOT_MODE?: boolean\n\tINTERACTIVE_MODE?: boolean\n\tSETTINGS_SCHEMA?: string\n\tSETTINGS_GLOBAL_JSON?: string\n\tSETTINGS_JSON?: string\n\tSETTINGS_LOCAL_JSON?: string\n\tSHELL_TYPE?: string\n\tSHELL_CONFIG_PATH?: string\n\tSHELL_CONFIG_CONTENT?: string\n\tREMOTES_INFO?: string\n\tMULTIPLE_REMOTES?: string\n\tSINGLE_REMOTE?: string\n\tSINGLE_REMOTE_NAME?: string\n\tSINGLE_REMOTE_URL?: string\n\tNO_REMOTES?: string\n\tREADME_CONTENT?: string\n\tSETTINGS_SCHEMA_CONTENT?: string\n\tFIRST_TIME_USER?: boolean\n\tVSCODE_SETTINGS_GITIGNORED?: string\n\t// Session summary template variables\n\tSESSION_CONTEXT?: string // Session ID for Claude to reference its conversation\n\tBRANCH_NAME?: string // Branch being finished\n\tLOOM_TYPE?: string // 'issue' or 'pr'\n\tCOMPACT_SUMMARIES?: string // Extracted compact summaries from session transcript\n\tRECAP_DATA?: string // Formatted recap data (goal, complexity, entries, artifacts)\n\t// Draft PR mode variables - mutually exclusive with standard issue mode\n\tDRAFT_PR_NUMBER?: number // PR number for draft PR workflow\n\tDRAFT_PR_MODE?: boolean // True when using github-draft-pr merge mode\n\tSTANDARD_ISSUE_MODE?: boolean // True when using standard issue commenting (not draft PR)\n\t// Multi-language support variables - mutually exclusive\n\tHAS_PACKAGE_JSON?: boolean // True when project has package.json\n\tNO_PACKAGE_JSON?: boolean // True when project does not have package.json (non-Node.js projects)\n}\n\nexport class PromptTemplateManager {\n\tprivate templateDir: string\n\n\tconstructor(templateDir?: string) {\n\t\tif (templateDir) {\n\t\t\tthis.templateDir = templateDir\n\t\t} else {\n\t\t\t// Find templates relative to the package installation\n\t\t\t// When running from dist/, templates are copied to dist/prompts/\n\t\t\tconst currentFileUrl = import.meta.url\n\t\t\tconst currentFilePath = fileURLToPath(currentFileUrl)\n\t\t\tconst distDir = path.dirname(currentFilePath) // dist directory (may be chunked file location)\n\n\t\t\t// Walk up to find the dist directory (in case of chunked files)\n\t\t\tlet templateDir = path.join(distDir, 'prompts')\n\t\t\tlet currentDir = distDir\n\n\t\t\t// Try to find the prompts directory by walking up\n\t\t\twhile (currentDir !== path.dirname(currentDir)) {\n\t\t\t\tconst candidatePath = path.join(currentDir, 'prompts')\n\t\t\t\ttry {\n\t\t\t\t\t// Check if this directory exists (sync check for constructor)\n\t\t\t\t\taccessSync(candidatePath)\n\t\t\t\t\ttemplateDir = candidatePath\n\t\t\t\t\tbreak\n\t\t\t\t} catch {\n\t\t\t\t\tcurrentDir = path.dirname(currentDir)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.templateDir = templateDir\n\t\t\tlogger.debug('PromptTemplateManager initialized', {\n\t\t\t\tcurrentFilePath,\n\t\t\t\tdistDir,\n\t\t\t\ttemplateDir: this.templateDir\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Load a template file by name\n\t */\n\tasync loadTemplate(templateName: 'issue' | 'pr' | 'regular' | 'init' | 'session-summary'): Promise<string> {\n\t\tconst templatePath = path.join(this.templateDir, `${templateName}-prompt.txt`)\n\n\t\tlogger.debug('Loading template', {\n\t\t\ttemplateName,\n\t\t\ttemplateDir: this.templateDir,\n\t\t\ttemplatePath\n\t\t})\n\n\t\ttry {\n\t\t\treturn await readFile(templatePath, 'utf-8')\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load template', { templateName, templatePath, error })\n\t\t\tthrow new Error(`Template not found: ${templatePath}`)\n\t\t}\n\t}\n\n\t/**\n\t * Substitute variables in a template string\n\t */\n\tsubstituteVariables(template: string, variables: TemplateVariables): string {\n\t\tlet result = template\n\n\t\t// Process conditional sections first\n\t\tresult = this.processConditionalSections(result, variables)\n\n\t\t// Replace each variable if it exists\n\t\tif (variables.ISSUE_NUMBER !== undefined) {\n\t\t\tresult = result.replace(/ISSUE_NUMBER/g, String(variables.ISSUE_NUMBER))\n\t\t}\n\n\t\tif (variables.PR_NUMBER !== undefined) {\n\t\t\tresult = result.replace(/PR_NUMBER/g, String(variables.PR_NUMBER))\n\t\t}\n\n\t\tif (variables.ISSUE_TITLE !== undefined) {\n\t\t\tresult = result.replace(/ISSUE_TITLE/g, variables.ISSUE_TITLE)\n\t\t}\n\n\t\tif (variables.PR_TITLE !== undefined) {\n\t\t\tresult = result.replace(/PR_TITLE/g, variables.PR_TITLE)\n\t\t}\n\n\t\tif (variables.WORKSPACE_PATH !== undefined) {\n\t\t\tresult = result.replace(/WORKSPACE_PATH/g, variables.WORKSPACE_PATH)\n\t\t}\n\n\t\tif (variables.PORT !== undefined) {\n\t\t\tresult = result.replace(/PORT/g, String(variables.PORT))\n\t\t}\n\n\t\tif (variables.SETTINGS_SCHEMA !== undefined) {\n\t\t\tresult = result.replace(/SETTINGS_SCHEMA/g, variables.SETTINGS_SCHEMA)\n\t\t}\n\n\t\tif (variables.SETTINGS_GLOBAL_JSON !== undefined) {\n\t\t\tresult = result.replace(/SETTINGS_GLOBAL_JSON/g, variables.SETTINGS_GLOBAL_JSON)\n\t\t}\n\n\t\tif (variables.SETTINGS_JSON !== undefined) {\n\t\t\tresult = result.replace(/SETTINGS_JSON/g, variables.SETTINGS_JSON)\n\t\t}\n\n\t\tif (variables.SETTINGS_LOCAL_JSON !== undefined) {\n\t\t\tresult = result.replace(/SETTINGS_LOCAL_JSON/g, variables.SETTINGS_LOCAL_JSON)\n\t\t}\n\n\t\tif (variables.SHELL_TYPE !== undefined) {\n\t\t\tresult = result.replace(/SHELL_TYPE/g, variables.SHELL_TYPE)\n\t\t}\n\n\t\tif (variables.SHELL_CONFIG_PATH !== undefined) {\n\t\t\tresult = result.replace(/SHELL_CONFIG_PATH/g, variables.SHELL_CONFIG_PATH)\n\t\t}\n\n\t\tif (variables.SHELL_CONFIG_CONTENT !== undefined) {\n\t\t\tresult = result.replace(/SHELL_CONFIG_CONTENT/g, variables.SHELL_CONFIG_CONTENT)\n\t\t}\n\n\t\tif (variables.REMOTES_INFO !== undefined) {\n\t\t\tresult = result.replace(/REMOTES_INFO/g, variables.REMOTES_INFO)\n\t\t}\n\n\t\tif (variables.MULTIPLE_REMOTES !== undefined) {\n\t\t\tresult = result.replace(/MULTIPLE_REMOTES/g, variables.MULTIPLE_REMOTES)\n\t\t}\n\n\t\tif (variables.SINGLE_REMOTE !== undefined) {\n\t\t\tresult = result.replace(/SINGLE_REMOTE/g, variables.SINGLE_REMOTE)\n\t\t}\n\n\t\tif (variables.SINGLE_REMOTE_NAME !== undefined) {\n\t\t\tresult = result.replace(/SINGLE_REMOTE_NAME/g, variables.SINGLE_REMOTE_NAME)\n\t\t}\n\n\t\tif (variables.SINGLE_REMOTE_URL !== undefined) {\n\t\t\tresult = result.replace(/SINGLE_REMOTE_URL/g, variables.SINGLE_REMOTE_URL)\n\t\t}\n\n\t\tif (variables.NO_REMOTES !== undefined) {\n\t\t\tresult = result.replace(/NO_REMOTES/g, variables.NO_REMOTES)\n\t\t}\n\n\t\tif (variables.README_CONTENT !== undefined) {\n\t\t\tresult = result.replace(/README_CONTENT/g, variables.README_CONTENT)\n\t\t}\n\n\t\tif (variables.SETTINGS_SCHEMA_CONTENT !== undefined) {\n\t\t\tresult = result.replace(/SETTINGS_SCHEMA_CONTENT/g, variables.SETTINGS_SCHEMA_CONTENT)\n\t\t}\n\n\t\tif (variables.VSCODE_SETTINGS_GITIGNORED !== undefined) {\n\t\t\tresult = result.replace(/VSCODE_SETTINGS_GITIGNORED/g, variables.VSCODE_SETTINGS_GITIGNORED)\n\t\t}\n\n\t\t// Session summary template variables\n\t\tif (variables.SESSION_CONTEXT !== undefined) {\n\t\t\tresult = result.replace(/SESSION_CONTEXT/g, variables.SESSION_CONTEXT)\n\t\t}\n\n\t\tif (variables.BRANCH_NAME !== undefined) {\n\t\t\tresult = result.replace(/BRANCH_NAME/g, variables.BRANCH_NAME)\n\t\t}\n\n\t\tif (variables.LOOM_TYPE !== undefined) {\n\t\t\tresult = result.replace(/LOOM_TYPE/g, variables.LOOM_TYPE)\n\t\t}\n\n\t\tif (variables.COMPACT_SUMMARIES !== undefined) {\n\t\t\tresult = result.replace(/COMPACT_SUMMARIES/g, variables.COMPACT_SUMMARIES)\n\t\t}\n\n\t\t// Draft PR mode variable substitution\n\t\tif (variables.DRAFT_PR_NUMBER !== undefined) {\n\t\t\tresult = result.replace(/DRAFT_PR_NUMBER/g, String(variables.DRAFT_PR_NUMBER))\n\t\t}\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Process conditional sections in template\n\t * Format: {{#IF ONE_SHOT_MODE}}content{{/IF ONE_SHOT_MODE}}\n\t *\n\t * Note: /s flag allows . to match newlines\n\t */\n\tprivate processConditionalSections(template: string, variables: TemplateVariables): string {\n\t\tlet result = template\n\n\t\t// Process ONE_SHOT_MODE conditionals\n\t\tconst oneShotRegex = /\\{\\{#IF ONE_SHOT_MODE\\}\\}(.*?)\\{\\{\\/IF ONE_SHOT_MODE\\}\\}/gs\n\n\t\tif (variables.ONE_SHOT_MODE === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(oneShotRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(oneShotRegex, '')\n\t\t}\n\n\t\t// Process SETTINGS_JSON conditionals\n\t\tconst settingsJsonRegex = /\\{\\{#IF SETTINGS_JSON\\}\\}(.*?)\\{\\{\\/IF SETTINGS_JSON\\}\\}/gs\n\n\t\tif (variables.SETTINGS_JSON !== undefined && variables.SETTINGS_JSON !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(settingsJsonRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(settingsJsonRegex, '')\n\t\t}\n\n\t\t// Process SETTINGS_GLOBAL_JSON conditionals\n\t\tconst settingsGlobalJsonRegex = /\\{\\{#IF SETTINGS_GLOBAL_JSON\\}\\}(.*?)\\{\\{\\/IF SETTINGS_GLOBAL_JSON\\}\\}/gs\n\n\t\tif (variables.SETTINGS_GLOBAL_JSON !== undefined && variables.SETTINGS_GLOBAL_JSON !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(settingsGlobalJsonRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(settingsGlobalJsonRegex, '')\n\t\t}\n\n\t\t// Process SETTINGS_LOCAL_JSON conditionals\n\t\tconst settingsLocalJsonRegex = /\\{\\{#IF SETTINGS_LOCAL_JSON\\}\\}(.*?)\\{\\{\\/IF SETTINGS_LOCAL_JSON\\}\\}/gs\n\n\t\tif (variables.SETTINGS_LOCAL_JSON !== undefined && variables.SETTINGS_LOCAL_JSON !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(settingsLocalJsonRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(settingsLocalJsonRegex, '')\n\t\t}\n\n\t\t// Process MULTIPLE_REMOTES conditionals\n\t\tconst multipleRemotesRegex = /\\{\\{#IF MULTIPLE_REMOTES\\}\\}(.*?)\\{\\{\\/IF MULTIPLE_REMOTES\\}\\}/gs\n\n\t\tif (variables.MULTIPLE_REMOTES !== undefined && variables.MULTIPLE_REMOTES !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(multipleRemotesRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(multipleRemotesRegex, '')\n\t\t}\n\n\t\t// Process SINGLE_REMOTE conditionals\n\t\tconst singleRemoteRegex = /\\{\\{#IF SINGLE_REMOTE\\}\\}(.*?)\\{\\{\\/IF SINGLE_REMOTE\\}\\}/gs\n\n\t\tif (variables.SINGLE_REMOTE !== undefined && variables.SINGLE_REMOTE !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(singleRemoteRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(singleRemoteRegex, '')\n\t\t}\n\n\t\t// Process NO_REMOTES conditionals\n\t\tconst noRemotesRegex = /\\{\\{#IF NO_REMOTES\\}\\}(.*?)\\{\\{\\/IF NO_REMOTES\\}\\}/gs\n\n\t\tif (variables.NO_REMOTES !== undefined && variables.NO_REMOTES !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(noRemotesRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(noRemotesRegex, '')\n\t\t}\n\n\t\t// Process FIRST_TIME_USER conditionals\n\t\tconst firstTimeUserRegex = /\\{\\{#IF FIRST_TIME_USER\\}\\}(.*?)\\{\\{\\/IF FIRST_TIME_USER\\}\\}/gs\n\n\t\tif (variables.FIRST_TIME_USER === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(firstTimeUserRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(firstTimeUserRegex, '')\n\t\t}\n\n\t\t// Process INTERACTIVE_MODE conditionals\n\t\tconst interactiveModeRegex = /\\{\\{#IF INTERACTIVE_MODE\\}\\}(.*?)\\{\\{\\/IF INTERACTIVE_MODE\\}\\}/gs\n\n\t\tif (variables.INTERACTIVE_MODE === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(interactiveModeRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(interactiveModeRegex, '')\n\t\t}\n\n\t\t// Process COMPACT_SUMMARIES conditionals\n\t\tconst compactSummariesRegex = /\\{\\{#IF COMPACT_SUMMARIES\\}\\}(.*?)\\{\\{\\/IF COMPACT_SUMMARIES\\}\\}/gs\n\n\t\tif (variables.COMPACT_SUMMARIES !== undefined && variables.COMPACT_SUMMARIES !== '') {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(compactSummariesRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(compactSummariesRegex, '')\n\t\t}\n\n\t\t// Process DRAFT_PR_MODE conditionals\n\t\tconst draftPrModeRegex = /\\{\\{#IF DRAFT_PR_MODE\\}\\}(.*?)\\{\\{\\/IF DRAFT_PR_MODE\\}\\}/gs\n\n\t\tif (variables.DRAFT_PR_MODE === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(draftPrModeRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(draftPrModeRegex, '')\n\t\t}\n\n\t\t// Process STANDARD_ISSUE_MODE conditionals\n\t\tconst standardIssueModeRegex = /\\{\\{#IF STANDARD_ISSUE_MODE\\}\\}(.*?)\\{\\{\\/IF STANDARD_ISSUE_MODE\\}\\}/gs\n\n\t\tif (variables.STANDARD_ISSUE_MODE === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(standardIssueModeRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(standardIssueModeRegex, '')\n\t\t}\n\n\t\t// Process HAS_PACKAGE_JSON conditionals\n\t\tconst hasPackageJsonRegex = /\\{\\{#IF HAS_PACKAGE_JSON\\}\\}(.*?)\\{\\{\\/IF HAS_PACKAGE_JSON\\}\\}/gs\n\n\t\tif (variables.HAS_PACKAGE_JSON === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(hasPackageJsonRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(hasPackageJsonRegex, '')\n\t\t}\n\n\t\t// Process NO_PACKAGE_JSON conditionals\n\t\tconst noPackageJsonRegex = /\\{\\{#IF NO_PACKAGE_JSON\\}\\}(.*?)\\{\\{\\/IF NO_PACKAGE_JSON\\}\\}/gs\n\n\t\tif (variables.NO_PACKAGE_JSON === true) {\n\t\t\t// Include the content, remove the conditional markers\n\t\t\tresult = result.replace(noPackageJsonRegex, '$1')\n\t\t} else {\n\t\t\t// Remove the entire conditional block\n\t\t\tresult = result.replace(noPackageJsonRegex, '')\n\t\t}\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Get a fully processed prompt for a workflow type\n\t */\n\tasync getPrompt(\n\t\ttype: 'issue' | 'pr' | 'regular' | 'init' | 'session-summary',\n\t\tvariables: TemplateVariables\n\t): Promise<string> {\n\t\tconst template = await this.loadTemplate(type)\n\t\treturn this.substituteVariables(template, variables)\n\t}\n}\n"],"mappings":"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","names":["templateDir"]}
@@ -1,20 +1,30 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ getExplicitCapabilities,
4
+ getPackageConfig,
3
5
  hasWebDependencies,
4
- parseBinField,
5
- readPackageJson
6
- } from "./chunk-2ZPFJQ3B.js";
6
+ parseBinField
7
+ } from "./chunk-BXCPJJYM.js";
7
8
 
8
9
  // src/lib/ProjectCapabilityDetector.ts
9
10
  var ProjectCapabilityDetector = class {
10
11
  /**
11
- * Detect project capabilities by analyzing package.json
12
+ * Detect project capabilities by analyzing package configuration
13
+ *
14
+ * Detection priority:
15
+ * 1. Explicit capabilities from package.iloom.json (for non-Node.js projects)
16
+ * 2. Inferred capabilities from package.json (bin field, web dependencies)
17
+ *
12
18
  * @param worktreePath Path to the worktree directory
13
19
  * @returns Project capabilities and bin entries
14
20
  */
15
21
  async detectCapabilities(worktreePath) {
16
22
  try {
17
- const pkgJson = await readPackageJson(worktreePath);
23
+ const pkgJson = await getPackageConfig(worktreePath);
24
+ const explicitCapabilities = getExplicitCapabilities(pkgJson);
25
+ if (explicitCapabilities.length > 0) {
26
+ return { capabilities: explicitCapabilities, binEntries: {} };
27
+ }
18
28
  const capabilities = [];
19
29
  if (pkgJson.bin) {
20
30
  capabilities.push("cli");
@@ -36,4 +46,4 @@ var ProjectCapabilityDetector = class {
36
46
  export {
37
47
  ProjectCapabilityDetector
38
48
  };
39
- //# sourceMappingURL=chunk-EBISESAP.js.map
49
+ //# sourceMappingURL=chunk-ZPSTA5PR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/ProjectCapabilityDetector.ts"],"sourcesContent":["import { getPackageConfig, parseBinField, hasWebDependencies, getExplicitCapabilities } from '../utils/package-json.js'\nimport type { ProjectCapability } from '../types/loom.js'\n\nexport interface ProjectCapabilities {\n capabilities: ProjectCapability[]\n binEntries: Record<string, string>\n}\n\nexport class ProjectCapabilityDetector {\n /**\n * Detect project capabilities by analyzing package configuration\n *\n * Detection priority:\n * 1. Explicit capabilities from package.iloom.json (for non-Node.js projects)\n * 2. Inferred capabilities from package.json (bin field, web dependencies)\n *\n * @param worktreePath Path to the worktree directory\n * @returns Project capabilities and bin entries\n */\n async detectCapabilities(worktreePath: string): Promise<ProjectCapabilities> {\n try {\n const pkgJson = await getPackageConfig(worktreePath)\n\n // Check for explicit capabilities first (from package.iloom.json)\n const explicitCapabilities = getExplicitCapabilities(pkgJson)\n if (explicitCapabilities.length > 0) {\n // For non-Node.js projects with explicit capabilities,\n // binEntries is empty (no bin field parsing needed)\n return { capabilities: explicitCapabilities, binEntries: {} }\n }\n\n // Fall back to inferring capabilities from package.json\n const capabilities: ProjectCapability[] = []\n\n // CLI detection: has bin field\n if (pkgJson.bin) {\n capabilities.push('cli')\n }\n\n // Web detection: has web framework dependencies\n if (hasWebDependencies(pkgJson)) {\n capabilities.push('web')\n }\n\n // Parse bin entries for CLI projects\n const binEntries = pkgJson.bin ? parseBinField(pkgJson.bin, pkgJson.name) : {}\n\n return { capabilities, binEntries }\n } catch (error) {\n // Handle missing package.json - return empty capabilities for non-Node.js projects\n if (error instanceof Error && error.message.includes('package.json not found')) {\n return { capabilities: [], binEntries: {} }\n }\n // Re-throw other errors (invalid JSON, etc.)\n throw error\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQO,IAAM,4BAAN,MAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWrC,MAAM,mBAAmB,cAAoD;AAC3E,QAAI;AACF,YAAM,UAAU,MAAM,iBAAiB,YAAY;AAGnD,YAAM,uBAAuB,wBAAwB,OAAO;AAC5D,UAAI,qBAAqB,SAAS,GAAG;AAGnC,eAAO,EAAE,cAAc,sBAAsB,YAAY,CAAC,EAAE;AAAA,MAC9D;AAGA,YAAM,eAAoC,CAAC;AAG3C,UAAI,QAAQ,KAAK;AACf,qBAAa,KAAK,KAAK;AAAA,MACzB;AAGA,UAAI,mBAAmB,OAAO,GAAG;AAC/B,qBAAa,KAAK,KAAK;AAAA,MACzB;AAGA,YAAM,aAAa,QAAQ,MAAM,cAAc,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC;AAE7E,aAAO,EAAE,cAAc,WAAW;AAAA,IACpC,SAAS,OAAO;AAEd,UAAI,iBAAiB,SAAS,MAAM,QAAQ,SAAS,wBAAwB,GAAG;AAC9E,eAAO,EAAE,cAAc,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,MAC5C;AAEA,YAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -5,18 +5,18 @@ import {
5
5
  EnvironmentManager,
6
6
  LoomManager,
7
7
  ResourceCleanup
8
- } from "./chunk-46JVEGUW.js";
9
- import "./chunk-LVLRMP7V.js";
8
+ } from "./chunk-I75JMBNB.js";
10
9
  import {
11
10
  ProcessManager
12
11
  } from "./chunk-VU3QMIP2.js";
12
+ import "./chunk-AXX3QIKK.js";
13
13
  import {
14
14
  IdentifierParser
15
15
  } from "./chunk-UQIXZ3BA.js";
16
16
  import {
17
17
  createNeonProviderFromSettings
18
18
  } from "./chunk-7LSSNB7Y.js";
19
- import "./chunk-2ZPFJQ3B.js";
19
+ import "./chunk-BXCPJJYM.js";
20
20
  import {
21
21
  GitWorktreeManager
22
22
  } from "./chunk-EK3XCAAS.js";
@@ -76,8 +76,8 @@ var CleanupCommand = class {
76
76
  );
77
77
  if (!this.loomManager) {
78
78
  const { GitHubService } = await import("./GitHubService-S2OGUTDR.js");
79
- const { ClaudeContextManager } = await import("./ClaudeContextManager-7WX7DUNI.js");
80
- const { ProjectCapabilityDetector } = await import("./ProjectCapabilityDetector-34LU7JJ4.js");
79
+ const { ClaudeContextManager } = await import("./ClaudeContextManager-6J2EB4QU.js");
80
+ const { ProjectCapabilityDetector } = await import("./ProjectCapabilityDetector-S5FLNCFI.js");
81
81
  const { DefaultBranchNamingService } = await import("./BranchNamingService-B5PVRR7F.js");
82
82
  this.loomManager = new LoomManager(
83
83
  this.gitWorktreeManager,
@@ -477,4 +477,4 @@ var CleanupCommand = class {
477
477
  export {
478
478
  CleanupCommand
479
479
  };
480
- //# sourceMappingURL=cleanup-WTZZ74VS.js.map
480
+ //# sourceMappingURL=cleanup-BRUAINKE.js.map