@goondocks/myco 0.14.4 → 0.15.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 (173) hide show
  1. package/dist/{agent-run-GZ5UVLDV.js → agent-run-T433ENJS.js} +6 -6
  2. package/dist/{agent-tasks-KKQ2GBBB.js → agent-tasks-TAIU3V5I.js} +6 -6
  3. package/dist/{chunk-X34OFKYU.js → chunk-23FJUKCN.js} +2 -2
  4. package/dist/{chunk-LD6U3L6O.js → chunk-2QMDRZPJ.js} +21 -17
  5. package/dist/chunk-2QMDRZPJ.js.map +1 -0
  6. package/dist/{chunk-KNTJOMWY.js → chunk-3MEOYXOW.js} +2 -2
  7. package/dist/{chunk-PSYLKCWQ.js → chunk-4BQ5QE76.js} +24 -5
  8. package/dist/chunk-4BQ5QE76.js.map +1 -0
  9. package/dist/{chunk-UZ5Y6XMP.js → chunk-4O3QNM5I.js} +2 -2
  10. package/dist/{chunk-JTYZRPX5.js → chunk-5ZT2Q6P5.js} +1 -1
  11. package/dist/{chunk-BCKYVLUZ.js → chunk-6GG2IVNV.js} +3 -3
  12. package/dist/{chunk-JJXVDCEX.js → chunk-75J2BR4P.js} +486 -488
  13. package/dist/chunk-75J2BR4P.js.map +1 -0
  14. package/dist/{chunk-TFBAV3PV.js → chunk-BFM6AM6R.js} +2 -2
  15. package/dist/{chunk-S6I62FAH.js → chunk-CUADDHHU.js} +4 -2
  16. package/dist/{chunk-S6I62FAH.js.map → chunk-CUADDHHU.js.map} +1 -1
  17. package/dist/{chunk-4VF6KQ2Z.js → chunk-DJQOYEK3.js} +87 -84
  18. package/dist/chunk-DJQOYEK3.js.map +1 -0
  19. package/dist/{chunk-OQVKLTQY.js → chunk-EYMKBNRP.js} +2 -2
  20. package/dist/{chunk-STBNNKL5.js → chunk-GCCBXCHF.js} +6 -6
  21. package/dist/{chunk-KH64DHOY.js → chunk-GDY63YAW.js} +279 -277
  22. package/dist/chunk-GDY63YAW.js.map +1 -0
  23. package/dist/{chunk-ZESTWGJT.js → chunk-GYIA6XLB.js} +2 -2
  24. package/dist/{chunk-S66YG6QK.js → chunk-LF5Z62X6.js} +46 -7
  25. package/dist/chunk-LF5Z62X6.js.map +1 -0
  26. package/dist/{chunk-PX5KIOKY.js → chunk-SPJGJEFV.js} +10 -2
  27. package/dist/{chunk-PX5KIOKY.js.map → chunk-SPJGJEFV.js.map} +1 -1
  28. package/dist/{chunk-QFMBZ72S.js → chunk-SV6UCB2Z.js} +2 -2
  29. package/dist/{chunk-GMTWRMLP.js → chunk-TQO4PF5K.js} +3 -3
  30. package/dist/{chunk-NVCGF2DS.js → chunk-X4XFJG6I.js} +10 -6
  31. package/dist/chunk-X4XFJG6I.js.map +1 -0
  32. package/dist/{chunk-TNCBMGWB.js → chunk-X5IXK5KO.js} +262 -226
  33. package/dist/chunk-X5IXK5KO.js.map +1 -0
  34. package/dist/{chunk-TVV6PZOC.js → chunk-Z7TZJ2SP.js} +2 -2
  35. package/dist/{cli-JLDCZ77U.js → cli-W37MRZHD.js} +45 -44
  36. package/dist/cli-W37MRZHD.js.map +1 -0
  37. package/dist/{client-LRQMMKLP.js → client-YNTTC75R.js} +4 -4
  38. package/dist/{config-H657SF6B.js → config-MOWCOJJ4.js} +4 -4
  39. package/dist/{detect-27DN6UTL.js → detect-GFYKKHLJ.js} +3 -3
  40. package/dist/{detect-providers-PAVE2X6O.js → detect-providers-EU35RUL3.js} +2 -2
  41. package/dist/{doctor-IG3CXMI7.js → doctor-PAAQU5AS.js} +38 -19
  42. package/dist/doctor-PAAQU5AS.js.map +1 -0
  43. package/dist/{executor-HKNINUWO.js → executor-4OXDK4ZA.js} +790 -312
  44. package/dist/executor-4OXDK4ZA.js.map +1 -0
  45. package/dist/{init-RHQUINC2.js → init-PHQAQANR.js} +41 -23
  46. package/dist/init-PHQAQANR.js.map +1 -0
  47. package/dist/{init-wizard-ZB3JRDLE.js → init-wizard-RFD46XAJ.js} +7 -7
  48. package/dist/{installer-25TSX4SR.js → installer-BTUNKWOU.js} +2 -2
  49. package/dist/{llm-T3QVHC3Y.js → llm-D4VWYUK7.js} +4 -4
  50. package/dist/{loader-WQKVWL5D.js → loader-WC4U5NM5.js} +4 -4
  51. package/dist/{loader-JQLO6K44.js → loader-WGDVRGLM.js} +6 -4
  52. package/dist/{logs-LXHPDKUA.js → logs-WFBX2I7C.js} +3 -3
  53. package/dist/{main-MVXPBP5Z.js → main-ADLCOYKM.js} +2351 -1914
  54. package/dist/main-ADLCOYKM.js.map +1 -0
  55. package/dist/{open-CVEMRH3Z.js → open-3VPUP3HD.js} +6 -6
  56. package/dist/{openai-embeddings-5T5ZP7LO.js → openai-embeddings-SEIV7AM3.js} +2 -2
  57. package/dist/{openrouter-RD2COFC7.js → openrouter-ELODIZRP.js} +2 -2
  58. package/dist/{post-compact-ALQ2UGZ7.js → post-compact-5NYLOC46.js} +9 -9
  59. package/dist/{post-tool-use-SPL7HIYU.js → post-tool-use-SNNXSZ5Y.js} +10 -10
  60. package/dist/{post-tool-use-failure-B3CUYBTR.js → post-tool-use-failure-POKVXQHY.js} +9 -9
  61. package/dist/{pre-compact-KPWC4V64.js → pre-compact-ZUICBJEX.js} +9 -9
  62. package/dist/{provider-check-QN7OGXZA.js → provider-check-B66E5PWS.js} +2 -2
  63. package/dist/{registry-2XQMCPA6.js → registry-DHWVHXWY.js} +5 -5
  64. package/dist/{remove-O2WCN6RC.js → remove-SVU2V4Q7.js} +52 -20
  65. package/dist/remove-SVU2V4Q7.js.map +1 -0
  66. package/dist/{resolution-events-5EVUEWHS.js → resolution-events-DBCRVZGU.js} +4 -4
  67. package/dist/{restart-S52VV3SP.js → restart-NBB5CXJ4.js} +7 -7
  68. package/dist/{search-IOJ5O37S.js → search-YUQZFRZX.js} +6 -6
  69. package/dist/{server-T4VPK6FU.js → server-NBRX56VL.js} +8 -8
  70. package/dist/{session-ID6BX72K.js → session-2QP4HMZ5.js} +8 -8
  71. package/dist/{session-end-I7ZABXRI.js → session-end-NNFBW7CQ.js} +10 -10
  72. package/dist/{session-start-VPOUY42U.js → session-start-NPNP4IXX.js} +15 -15
  73. package/dist/{setup-llm-G5UG5N3T.js → setup-llm-C3IGFLRN.js} +8 -8
  74. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +8 -7
  75. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +71 -144
  76. package/dist/src/agent/definitions/tasks/skill-generate.yaml +10 -62
  77. package/dist/src/agent/definitions/tasks/skill-survey.yaml +87 -53
  78. package/dist/src/agent/prompts/agent.md +1 -0
  79. package/dist/src/cli.js +1 -1
  80. package/dist/src/daemon/main.js +1 -1
  81. package/dist/src/hooks/post-tool-use.js +1 -1
  82. package/dist/src/hooks/session-end.js +1 -1
  83. package/dist/src/hooks/session-start.js +1 -1
  84. package/dist/src/hooks/stop.js +1 -1
  85. package/dist/src/hooks/user-prompt-submit.js +1 -1
  86. package/dist/src/mcp/server.js +1 -1
  87. package/dist/src/worker/src/schema.ts +14 -0
  88. package/dist/{stats-GRI4MTS2.js → stats-FEEXIRMS.js} +9 -9
  89. package/dist/{stop-UTZ2CXI2.js → stop-FGDGWXTK.js} +10 -10
  90. package/dist/{stop-failure-CECM5NB7.js → stop-failure-5YAGH2TQ.js} +9 -9
  91. package/dist/{subagent-start-SYZGJYUN.js → subagent-start-UCKVJDR4.js} +9 -9
  92. package/dist/{subagent-stop-7WWW7TGQ.js → subagent-stop-H25B3QEC.js} +9 -9
  93. package/dist/{task-completed-N7SIY6T6.js → task-completed-2JGZN2CF.js} +9 -9
  94. package/dist/{team-SJPDXELY.js → team-TG5WZXWO.js} +34 -26
  95. package/dist/team-TG5WZXWO.js.map +1 -0
  96. package/dist/ui/assets/index-7Vimyg7g.js +837 -0
  97. package/dist/ui/assets/{index-BmsHIwjl.css → index-DlEQ8A8Y.css} +1 -1
  98. package/dist/ui/index.html +2 -2
  99. package/dist/{update-DZZYQ4NJ.js → update-EG3N2EXI.js} +30 -14
  100. package/dist/update-EG3N2EXI.js.map +1 -0
  101. package/dist/{user-prompt-submit-UUNRRS5P.js → user-prompt-submit-7FFQ3ORA.js} +10 -10
  102. package/dist/{verify-JHIMXTY5.js → verify-2M3DYHEY.js} +6 -6
  103. package/dist/{version-VKNCAPZW.js → version-JUQU5W22.js} +2 -2
  104. package/package.json +3 -3
  105. package/dist/chunk-4VF6KQ2Z.js.map +0 -1
  106. package/dist/chunk-JJXVDCEX.js.map +0 -1
  107. package/dist/chunk-KH64DHOY.js.map +0 -1
  108. package/dist/chunk-LD6U3L6O.js.map +0 -1
  109. package/dist/chunk-NVCGF2DS.js.map +0 -1
  110. package/dist/chunk-PSYLKCWQ.js.map +0 -1
  111. package/dist/chunk-S66YG6QK.js.map +0 -1
  112. package/dist/chunk-TNCBMGWB.js.map +0 -1
  113. package/dist/cli-JLDCZ77U.js.map +0 -1
  114. package/dist/doctor-IG3CXMI7.js.map +0 -1
  115. package/dist/executor-HKNINUWO.js.map +0 -1
  116. package/dist/init-RHQUINC2.js.map +0 -1
  117. package/dist/main-MVXPBP5Z.js.map +0 -1
  118. package/dist/remove-O2WCN6RC.js.map +0 -1
  119. package/dist/resolve-3FEUV462.js +0 -9
  120. package/dist/team-SJPDXELY.js.map +0 -1
  121. package/dist/ui/assets/index-Cn6cQwJy.js +0 -842
  122. package/dist/update-DZZYQ4NJ.js.map +0 -1
  123. package/dist/version-VKNCAPZW.js.map +0 -1
  124. /package/dist/{agent-run-GZ5UVLDV.js.map → agent-run-T433ENJS.js.map} +0 -0
  125. /package/dist/{agent-tasks-KKQ2GBBB.js.map → agent-tasks-TAIU3V5I.js.map} +0 -0
  126. /package/dist/{chunk-X34OFKYU.js.map → chunk-23FJUKCN.js.map} +0 -0
  127. /package/dist/{chunk-KNTJOMWY.js.map → chunk-3MEOYXOW.js.map} +0 -0
  128. /package/dist/{chunk-UZ5Y6XMP.js.map → chunk-4O3QNM5I.js.map} +0 -0
  129. /package/dist/{chunk-JTYZRPX5.js.map → chunk-5ZT2Q6P5.js.map} +0 -0
  130. /package/dist/{chunk-BCKYVLUZ.js.map → chunk-6GG2IVNV.js.map} +0 -0
  131. /package/dist/{chunk-TFBAV3PV.js.map → chunk-BFM6AM6R.js.map} +0 -0
  132. /package/dist/{chunk-OQVKLTQY.js.map → chunk-EYMKBNRP.js.map} +0 -0
  133. /package/dist/{chunk-STBNNKL5.js.map → chunk-GCCBXCHF.js.map} +0 -0
  134. /package/dist/{chunk-ZESTWGJT.js.map → chunk-GYIA6XLB.js.map} +0 -0
  135. /package/dist/{chunk-QFMBZ72S.js.map → chunk-SV6UCB2Z.js.map} +0 -0
  136. /package/dist/{chunk-GMTWRMLP.js.map → chunk-TQO4PF5K.js.map} +0 -0
  137. /package/dist/{chunk-TVV6PZOC.js.map → chunk-Z7TZJ2SP.js.map} +0 -0
  138. /package/dist/{client-LRQMMKLP.js.map → client-YNTTC75R.js.map} +0 -0
  139. /package/dist/{config-H657SF6B.js.map → config-MOWCOJJ4.js.map} +0 -0
  140. /package/dist/{detect-27DN6UTL.js.map → detect-GFYKKHLJ.js.map} +0 -0
  141. /package/dist/{detect-providers-PAVE2X6O.js.map → detect-providers-EU35RUL3.js.map} +0 -0
  142. /package/dist/{init-wizard-ZB3JRDLE.js.map → init-wizard-RFD46XAJ.js.map} +0 -0
  143. /package/dist/{installer-25TSX4SR.js.map → installer-BTUNKWOU.js.map} +0 -0
  144. /package/dist/{llm-T3QVHC3Y.js.map → llm-D4VWYUK7.js.map} +0 -0
  145. /package/dist/{loader-JQLO6K44.js.map → loader-WC4U5NM5.js.map} +0 -0
  146. /package/dist/{loader-WQKVWL5D.js.map → loader-WGDVRGLM.js.map} +0 -0
  147. /package/dist/{logs-LXHPDKUA.js.map → logs-WFBX2I7C.js.map} +0 -0
  148. /package/dist/{open-CVEMRH3Z.js.map → open-3VPUP3HD.js.map} +0 -0
  149. /package/dist/{openai-embeddings-5T5ZP7LO.js.map → openai-embeddings-SEIV7AM3.js.map} +0 -0
  150. /package/dist/{openrouter-RD2COFC7.js.map → openrouter-ELODIZRP.js.map} +0 -0
  151. /package/dist/{post-compact-ALQ2UGZ7.js.map → post-compact-5NYLOC46.js.map} +0 -0
  152. /package/dist/{post-tool-use-SPL7HIYU.js.map → post-tool-use-SNNXSZ5Y.js.map} +0 -0
  153. /package/dist/{post-tool-use-failure-B3CUYBTR.js.map → post-tool-use-failure-POKVXQHY.js.map} +0 -0
  154. /package/dist/{pre-compact-KPWC4V64.js.map → pre-compact-ZUICBJEX.js.map} +0 -0
  155. /package/dist/{provider-check-QN7OGXZA.js.map → provider-check-B66E5PWS.js.map} +0 -0
  156. /package/dist/{registry-2XQMCPA6.js.map → registry-DHWVHXWY.js.map} +0 -0
  157. /package/dist/{resolution-events-5EVUEWHS.js.map → resolution-events-DBCRVZGU.js.map} +0 -0
  158. /package/dist/{restart-S52VV3SP.js.map → restart-NBB5CXJ4.js.map} +0 -0
  159. /package/dist/{search-IOJ5O37S.js.map → search-YUQZFRZX.js.map} +0 -0
  160. /package/dist/{server-T4VPK6FU.js.map → server-NBRX56VL.js.map} +0 -0
  161. /package/dist/{session-ID6BX72K.js.map → session-2QP4HMZ5.js.map} +0 -0
  162. /package/dist/{session-end-I7ZABXRI.js.map → session-end-NNFBW7CQ.js.map} +0 -0
  163. /package/dist/{session-start-VPOUY42U.js.map → session-start-NPNP4IXX.js.map} +0 -0
  164. /package/dist/{setup-llm-G5UG5N3T.js.map → setup-llm-C3IGFLRN.js.map} +0 -0
  165. /package/dist/{stats-GRI4MTS2.js.map → stats-FEEXIRMS.js.map} +0 -0
  166. /package/dist/{stop-UTZ2CXI2.js.map → stop-FGDGWXTK.js.map} +0 -0
  167. /package/dist/{stop-failure-CECM5NB7.js.map → stop-failure-5YAGH2TQ.js.map} +0 -0
  168. /package/dist/{subagent-start-SYZGJYUN.js.map → subagent-start-UCKVJDR4.js.map} +0 -0
  169. /package/dist/{subagent-stop-7WWW7TGQ.js.map → subagent-stop-H25B3QEC.js.map} +0 -0
  170. /package/dist/{task-completed-N7SIY6T6.js.map → task-completed-2JGZN2CF.js.map} +0 -0
  171. /package/dist/{user-prompt-submit-UUNRRS5P.js.map → user-prompt-submit-7FFQ3ORA.js.map} +0 -0
  172. /package/dist/{verify-JHIMXTY5.js.map → verify-2M3DYHEY.js.map} +0 -0
  173. /package/dist/{resolve-3FEUV462.js.map → version-JUQU5W22.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/remove.ts"],"sourcesContent":["import { resolveVaultDir } from '../vault/resolve.js';\nimport { isProcessAlive } from './shared.js';\nimport { loadManifests, resolvePackageRoot } from '../symbionts/detect.js';\nimport { SymbiontInstaller } from '../symbionts/installer.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function run(args: string[]): Promise<void> {\n const vaultDir = resolveVaultDir();\n if (!fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.error(`No myco.yaml found in ${vaultDir}. Nothing to remove.`);\n process.exit(1);\n }\n\n const projectRoot = path.dirname(vaultDir);\n const allManifests = loadManifests();\n const pkgRoot = resolvePackageRoot();\n const removeVault = args.includes('--remove-vault');\n\n console.log(`Removing Myco from ${projectRoot}\\n`);\n\n // --- Stop daemon ---\n\n const daemonPath = path.join(vaultDir, 'daemon.json');\n try {\n const daemon = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n if (isProcessAlive(daemon.pid)) {\n process.kill(daemon.pid, 'SIGTERM');\n console.log(` \\u2713 Stopped daemon (pid ${daemon.pid})`);\n }\n fs.unlinkSync(daemonPath);\n } catch { /* no daemon running */ }\n\n // --- Unregister from all configured agents ---\n\n const configured = allManifests.filter((m) =>\n fs.existsSync(path.join(projectRoot, m.configDir)),\n );\n\n for (const manifest of configured) {\n try {\n const installer = new SymbiontInstaller(manifest, projectRoot, pkgRoot);\n const result = installer.uninstall();\n\n const removed = [\n result.hooks && 'hooks',\n result.mcp && 'MCP server',\n result.skills && 'skills',\n result.settings && 'settings',\n result.instructions && 'instructions',\n ].filter(Boolean);\n\n if (removed.length > 0) {\n console.log(` \\u2713 Removed from ${manifest.displayName}: ${removed.join(', ')}`);\n }\n } catch (err) {\n console.error(` \\u2717 Failed to clean ${manifest.displayName}: ${(err as Error).message}`);\n }\n }\n\n // --- Remove .mcp.json if it's now empty ---\n\n const mcpJsonPath = path.join(projectRoot, '.mcp.json');\n try {\n const config = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\n if (!config.mcpServers || Object.keys(config.mcpServers).length === 0) {\n fs.unlinkSync(mcpJsonPath);\n console.log(' \\u2713 Removed empty .mcp.json');\n }\n } catch { /* doesn't exist or already clean */ }\n\n // --- Remove vault (unless --keep-vault) ---\n\n if (removeVault) {\n fs.rmSync(vaultDir, { recursive: true, force: true });\n console.log(` \\u2713 Removed vault at ${vaultDir}`);\n } else {\n console.log(` \\u2013 Vault preserved at ${vaultDir} (use --remove-vault to delete)`);\n }\n\n console.log('\\nMyco has been removed from this project.');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,IAAI,MAA+B;AACvD,QAAM,WAAW,gBAAgB;AACjC,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,UAAU,WAAW,CAAC,GAAG;AACpD,YAAQ,MAAM,yBAAyB,QAAQ,sBAAsB;AACrE,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,cAAc,KAAK,QAAQ,QAAQ;AACzC,QAAM,eAAe,cAAc;AACnC,QAAM,UAAU,mBAAmB;AACnC,QAAM,cAAc,KAAK,SAAS,gBAAgB;AAElD,UAAQ,IAAI,sBAAsB,WAAW;AAAA,CAAI;AAIjD,QAAM,aAAa,KAAK,KAAK,UAAU,aAAa;AACpD,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC9D,QAAI,eAAe,OAAO,GAAG,GAAG;AAC9B,cAAQ,KAAK,OAAO,KAAK,SAAS;AAClC,cAAQ,IAAI,gCAAgC,OAAO,GAAG,GAAG;AAAA,IAC3D;AACA,OAAG,WAAW,UAAU;AAAA,EAC1B,QAAQ;AAAA,EAA0B;AAIlC,QAAM,aAAa,aAAa;AAAA,IAAO,CAAC,MACtC,GAAG,WAAW,KAAK,KAAK,aAAa,EAAE,SAAS,CAAC;AAAA,EACnD;AAEA,aAAW,YAAY,YAAY;AACjC,QAAI;AACF,YAAM,YAAY,IAAI,kBAAkB,UAAU,aAAa,OAAO;AACtE,YAAM,SAAS,UAAU,UAAU;AAEnC,YAAM,UAAU;AAAA,QACd,OAAO,SAAS;AAAA,QAChB,OAAO,OAAO;AAAA,QACd,OAAO,UAAU;AAAA,QACjB,OAAO,YAAY;AAAA,QACnB,OAAO,gBAAgB;AAAA,MACzB,EAAE,OAAO,OAAO;AAEhB,UAAI,QAAQ,SAAS,GAAG;AACtB,gBAAQ,IAAI,yBAAyB,SAAS,WAAW,KAAK,QAAQ,KAAK,IAAI,CAAC,EAAE;AAAA,MACpF;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,4BAA4B,SAAS,WAAW,KAAM,IAAc,OAAO,EAAE;AAAA,IAC7F;AAAA,EACF;AAIA,QAAM,cAAc,KAAK,KAAK,aAAa,WAAW;AACtD,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,GAAG,aAAa,aAAa,OAAO,CAAC;AAC/D,QAAI,CAAC,OAAO,cAAc,OAAO,KAAK,OAAO,UAAU,EAAE,WAAW,GAAG;AACrE,SAAG,WAAW,WAAW;AACzB,cAAQ,IAAI,kCAAkC;AAAA,IAChD;AAAA,EACF,QAAQ;AAAA,EAAuC;AAI/C,MAAI,aAAa;AACf,OAAG,OAAO,UAAU,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACpD,YAAQ,IAAI,6BAA6B,QAAQ,EAAE;AAAA,EACrD,OAAO;AACL,YAAQ,IAAI,+BAA+B,QAAQ,iCAAiC;AAAA,EACtF;AAEA,UAAQ,IAAI,4CAA4C;AAC1D;","names":[]}
@@ -1,9 +0,0 @@
1
- import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
- import {
3
- resolveVaultDir
4
- } from "./chunk-JTYZRPX5.js";
5
- import "./chunk-PZUWP5VK.js";
6
- export {
7
- resolveVaultDir
8
- };
9
- //# sourceMappingURL=resolve-3FEUV462.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/team.ts"],"sourcesContent":["/**\n * CLI team commands — provision and manage Cloudflare team sync infrastructure.\n *\n * `myco team init` — Provision D1 database, Vectorize index, deploy worker.\n * `myco team upgrade` — Redeploy worker with updated source.\n */\n\nimport { execFileSync } from 'node:child_process';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { loadConfig, updateTeamConfig } from '../config/loader.js';\nimport { writeSecret, readSecrets } from '../config/secrets.js';\nimport { resolvePackageRoot } from '../symbionts/detect.js';\nimport { WRANGLER_COMMAND_TIMEOUT_MS, TEAM_API_KEY_SECRET } from '../constants.js';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Number of random bytes for API key generation. */\nconst API_KEY_BYTES = 32;\n\n/** Vectorize index dimensions (must match the embedding model). */\nconst VECTORIZE_DIMENSIONS = '1024';\n\n/** Vectorize distance metric. */\nconst VECTORIZE_METRIC = 'cosine';\n\n/** Prefix for team resource names. */\nconst TEAM_RESOURCE_PREFIX = 'myco-team';\n\n/** Length of the project hash suffix for unique resource naming. */\nconst PROJECT_HASH_LENGTH = 8;\n\n\n/** Source directory for worker files (relative to package root). */\nconst WORKER_SOURCE_DIR = 'src/worker';\n\n/** Deployment directory name within the vault. */\nconst TEAM_WORKER_DIR = '.team-worker';\n\n/** Regex to extract D1 database ID from wrangler d1 create output (JSON format). */\nconst D1_ID_JSON_REGEX = /\"database_id\"\\s*:\\s*\"([0-9a-f-]{36})\"/i;\n\n/** Regex to extract D1 database ID from wrangler d1 create output (text format). */\nconst D1_ID_TEXT_REGEX = /id:\\s*([0-9a-f-]{36})/i;\n\n/** Regex to extract worker URL from wrangler deploy output. */\nconst WORKER_URL_REGEX = /(https:\\/\\/[^\\s]+\\.workers\\.dev)/;\n\n/** Regex to match wrangler.toml name field. */\nconst TOML_NAME_REGEX = /^name\\s*=\\s*\"[^\"]*\"/m;\n\n/** Regex to match wrangler.toml D1 placeholder. */\nconst TOML_D1_PLACEHOLDER_REGEX = /<YOUR_D1_DATABASE_ID>/g;\n\n/** Regex to match wrangler.toml database_name field. */\nconst TOML_DB_NAME_REGEX = /database_name\\s*=\\s*\"[^\"]*\"/g;\n\n/** Regex to match wrangler.toml index_name field. */\nconst TOML_INDEX_NAME_REGEX = /index_name\\s*=\\s*\"[^\"]*\"/g;\n\n/** Regex to match database_id in existing wrangler.toml. */\nconst TOML_DB_ID_REGEX = /database_id\\s*=\\s*\"([^\"]+)\"/;\n\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n/** Generate a project hash from vault dir for unique resource naming. */\nfunction projectHash(vaultDir: string): string {\n const hash = crypto.createHash('sha256').update(vaultDir).digest('hex');\n return hash.slice(0, PROJECT_HASH_LENGTH);\n}\n\n/** Build the unique resource name for this project's team infrastructure. */\nfunction resourceName(vaultDir: string): string {\n return `${TEAM_RESOURCE_PREFIX}-${projectHash(vaultDir)}`;\n}\n\n/** Run a wrangler command and return stdout. Throws on failure. */\nfunction wrangler(args: string[], options?: { cwd?: string }): string {\n return execFileSync('wrangler', args, {\n encoding: 'utf-8',\n timeout: WRANGLER_COMMAND_TIMEOUT_MS,\n stdio: ['pipe', 'pipe', 'pipe'],\n ...options,\n });\n}\n\n/** Find the worker source directory. Checks dist layout first (installed), then source layout (dev). */\nfunction locateWorkerSource(): string {\n const root = resolvePackageRoot();\n const distPath = path.join(root, 'dist', WORKER_SOURCE_DIR);\n if (fs.existsSync(distPath)) return distPath;\n const srcPath = path.join(root, WORKER_SOURCE_DIR);\n if (fs.existsSync(srcPath)) return srcPath;\n throw new Error(`Cannot find ${WORKER_SOURCE_DIR} — are you running from the myco package?`);\n}\n\n/**\n * Copy worker source to the vault deployment directory and patch wrangler.toml\n * with actual D1 database ID and resource names.\n */\nfunction prepareDeployDir(vaultDir: string, d1Id: string): string {\n const srcDir = locateWorkerSource();\n const deployDir = path.join(vaultDir, TEAM_WORKER_DIR);\n\n // Copy all worker source files\n fs.cpSync(srcDir, deployDir, { recursive: true });\n\n // Patch wrangler.toml with actual IDs\n const tomlPath = path.join(deployDir, 'wrangler.toml');\n let toml = fs.readFileSync(tomlPath, 'utf-8');\n const name = resourceName(vaultDir);\n toml = toml.replace(TOML_NAME_REGEX, `name = \"${name}\"`);\n toml = toml.replace(TOML_D1_PLACEHOLDER_REGEX, d1Id);\n toml = toml.replace(TOML_DB_NAME_REGEX, `database_name = \"${name}\"`);\n toml = toml.replace(TOML_INDEX_NAME_REGEX, `index_name = \"${name}-vectors\"`);\n fs.writeFileSync(tomlPath, toml, 'utf-8');\n\n return deployDir;\n}\n\n/** Extract D1 database ID from wrangler d1 create output (handles both JSON and text formats). */\nfunction parseD1Id(output: string): string {\n const jsonMatch = output.match(D1_ID_JSON_REGEX);\n if (jsonMatch) return jsonMatch[1];\n const textMatch = output.match(D1_ID_TEXT_REGEX);\n if (textMatch) return textMatch[1];\n throw new Error(`Could not parse D1 database ID from wrangler output:\\n${output}`);\n}\n\n/** Extract worker URL from wrangler deploy output. */\nfunction parseWorkerUrl(output: string): string {\n // Output typically contains: \"https://<name>.<subdomain>.workers.dev\"\n const match = output.match(WORKER_URL_REGEX);\n if (!match) throw new Error(`Could not parse worker URL from deploy output:\\n${output}`);\n return match[1];\n}\n\n// ---------------------------------------------------------------------------\n// Commands\n// ---------------------------------------------------------------------------\n\nexport async function teamInit(vaultDir: string): Promise<void> {\n console.log('Provisioning team sync infrastructure...\\n');\n\n // 1. Check for wrangler\n try {\n const version = wrangler(['--version']).trim();\n console.log(`wrangler: ${version}`);\n } catch {\n console.error('Error: wrangler CLI not found. Install it with: npm install -g wrangler');\n process.exit(1);\n }\n\n // 2. Check auth\n try {\n wrangler(['whoami']);\n console.log('Cloudflare auth: OK\\n');\n } catch {\n console.error('Error: Not authenticated with Cloudflare. Run: wrangler login');\n process.exit(1);\n }\n\n const name = resourceName(vaultDir);\n console.log(`Resource name: ${name}\\n`);\n\n // 3. Create D1 database (or reuse existing)\n console.log('Creating D1 database...');\n let d1Id: string;\n try {\n const d1Output = wrangler(['d1', 'create', name]);\n d1Id = parseD1Id(d1Output);\n console.log(`D1 database created: ${d1Id}\\n`);\n } catch (err) {\n const errMsg = (err as Error).message;\n if (errMsg.includes('already exists')) {\n console.log('D1 database already exists, looking up ID...');\n const listOutput = wrangler(['d1', 'list', '--json']);\n const databases = JSON.parse(listOutput) as Array<{ name: string; uuid: string }>;\n const existing = databases.find((db) => db.name === name);\n if (!existing) {\n console.error(`D1 database \"${name}\" reported as existing but not found in list`);\n process.exit(1);\n }\n d1Id = existing.uuid;\n console.log(`Reusing D1 database: ${d1Id}\\n`);\n } else {\n console.error(`Failed to create D1 database: ${errMsg}`);\n process.exit(1);\n }\n }\n\n // 4. Create Vectorize index (or reuse existing)\n console.log('Creating Vectorize index...');\n try {\n wrangler(['vectorize', 'create', `${name}-vectors`, '--dimensions', VECTORIZE_DIMENSIONS, '--metric', VECTORIZE_METRIC]);\n console.log('Vectorize index created\\n');\n } catch (err) {\n const errMsg = (err as Error).message;\n if (errMsg.includes('already exists') || errMsg.includes('duplicate_name')) {\n console.log('Vectorize index already exists, reusing\\n');\n } else {\n console.error(`Failed to create Vectorize index: ${errMsg}`);\n process.exit(1);\n }\n }\n\n // 5. Generate API key\n const apiKey = crypto.randomBytes(API_KEY_BYTES).toString('hex');\n\n // 6. Prepare deployment directory\n console.log('Preparing worker deployment...');\n const deployDir = prepareDeployDir(vaultDir, d1Id);\n\n // 7. Set API key secret via wrangler\n console.log('Setting API key secret...');\n try {\n execFileSync('wrangler', ['secret', 'put', TEAM_API_KEY_SECRET, '--name', name], {\n encoding: 'utf-8',\n timeout: WRANGLER_COMMAND_TIMEOUT_MS,\n input: apiKey,\n stdio: ['pipe', 'pipe', 'pipe'],\n cwd: deployDir,\n });\n console.log('Secret set\\n');\n } catch (err) {\n console.error(`Failed to set API key secret: ${(err as Error).message}`);\n process.exit(1);\n }\n\n // 8. Deploy worker\n console.log('Deploying worker...');\n let workerUrl: string;\n try {\n const deployOutput = wrangler(['deploy'], { cwd: deployDir });\n workerUrl = parseWorkerUrl(deployOutput);\n console.log(`Worker deployed: ${workerUrl}\\n`);\n } catch (err) {\n console.error(`Failed to deploy worker: ${(err as Error).message}`);\n process.exit(1);\n }\n\n // 9. Seed team config in the Worker\n console.log('Setting team configuration...');\n try {\n const { getMachineId } = await import('../daemon/machine-id.js');\n const creatorMachineId = await getMachineId(vaultDir);\n await fetch(`${workerUrl}/config`, {\n method: 'PUT',\n headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },\n body: JSON.stringify({\n team_name: name,\n embedding_model: '@cf/baai/bge-m3',\n embedding_dimensions: '1024',\n created_at: String(Math.floor(Date.now() / 1000)),\n created_by: creatorMachineId,\n }),\n });\n console.log('Team config saved\\n');\n } catch {\n console.log('Warning: could not seed team config (non-fatal)\\n');\n }\n\n // 10. Save config and API key locally\n updateTeamConfig(vaultDir, {\n enabled: true,\n worker_url: workerUrl,\n });\n writeSecret(vaultDir, TEAM_API_KEY_SECRET, apiKey);\n\n console.log('Team sync configured!\\n');\n console.log(` URL: ${workerUrl}`);\n console.log(` API Key: ${apiKey.slice(0, 8)}...${apiKey.slice(-4)}`);\n console.log('\\nShare the URL and API key with teammates so they can connect.');\n}\n\nexport async function teamUpgrade(vaultDir: string): Promise<void> {\n console.log('Upgrading team sync worker...\\n');\n\n const config = loadConfig(vaultDir);\n if (!config.team.worker_url) {\n console.error('No team sync configured. Run: myco team init');\n process.exit(1);\n }\n\n const deployDir = path.join(vaultDir, TEAM_WORKER_DIR);\n const tomlPath = path.join(deployDir, 'wrangler.toml');\n\n if (!fs.existsSync(tomlPath)) {\n console.error('No deployment directory found. Run: myco team init');\n process.exit(1);\n }\n\n // Read ALL existing resource identifiers from current wrangler.toml.\n // These are immutable after init — regenerating from projectHash would\n // break if the hash changed (e.g., after the projectHash bug fix).\n const existingToml = fs.readFileSync(tomlPath, 'utf-8');\n const d1Match = existingToml.match(TOML_DB_ID_REGEX);\n if (!d1Match || d1Match[1] === '<YOUR_D1_DATABASE_ID>') {\n console.error('Cannot determine D1 database ID from existing deployment. Run: myco team init');\n process.exit(1);\n }\n const d1Id = d1Match[1];\n\n const nameMatch = existingToml.match(/^name\\s*=\\s*\"([^\"]*)\"/m);\n const dbNameMatch = existingToml.match(/database_name\\s*=\\s*\"([^\"]*)\"/);\n const indexNameMatch = existingToml.match(/index_name\\s*=\\s*\"([^\"]*)\"/);\n\n // Re-copy worker source from package (updated code)\n console.log('Updating worker source...');\n const srcDir = locateWorkerSource();\n fs.cpSync(srcDir, deployDir, { recursive: true });\n\n // Patch wrangler.toml preserving existing resource names — NOT regenerating\n let toml = fs.readFileSync(path.join(deployDir, 'wrangler.toml'), 'utf-8');\n const workerName = nameMatch?.[1] ?? resourceName(vaultDir);\n toml = toml.replace(TOML_NAME_REGEX, `name = \"${workerName}\"`);\n toml = toml.replace(TOML_D1_PLACEHOLDER_REGEX, d1Id);\n toml = toml.replace(TOML_DB_NAME_REGEX, `database_name = \"${dbNameMatch?.[1] ?? workerName}\"`);\n toml = toml.replace(TOML_INDEX_NAME_REGEX, `index_name = \"${indexNameMatch?.[1] ?? `${workerName}-vectors`}\"`);\n fs.writeFileSync(path.join(deployDir, 'wrangler.toml'), toml, 'utf-8');\n\n // Re-set API key secret before deploy (deploy can wipe secrets)\n console.log('Setting API key secret...');\n const secrets = readSecrets(vaultDir);\n const apiKey = secrets[TEAM_API_KEY_SECRET];\n if (apiKey) {\n try {\n execFileSync('wrangler', ['secret', 'put', TEAM_API_KEY_SECRET, '--name', workerName], {\n encoding: 'utf-8',\n timeout: WRANGLER_COMMAND_TIMEOUT_MS,\n input: apiKey,\n stdio: ['pipe', 'pipe', 'pipe'],\n cwd: deployDir,\n });\n console.log('Secret set\\n');\n } catch (err) {\n console.warn(`Warning: could not set API key secret: ${(err as Error).message}`);\n }\n }\n\n // Redeploy\n console.log('Deploying...');\n try {\n const deployOutput = wrangler(['deploy'], { cwd: deployDir });\n const workerUrl = parseWorkerUrl(deployOutput);\n console.log(`Worker deployed: ${workerUrl}\\n`);\n\n // Update URL in config in case it changed\n updateTeamConfig(vaultDir, { worker_url: workerUrl });\n } catch (err) {\n console.error(`Failed to deploy worker: ${(err as Error).message}`);\n process.exit(1);\n }\n\n console.log('Upgrade complete.');\n}\n"],"mappings":"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","names":[]}