@goondocks/myco 0.12.9 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +6 -0
  2. package/dist/{agent-run-E3P3WWPD.js → agent-run-YBASQHC7.js} +8 -7
  3. package/dist/{agent-run-E3P3WWPD.js.map → agent-run-YBASQHC7.js.map} +1 -1
  4. package/dist/{agent-tasks-GWII2I4E.js → agent-tasks-WBQFDHWC.js} +8 -7
  5. package/dist/{agent-tasks-GWII2I4E.js.map → agent-tasks-WBQFDHWC.js.map} +1 -1
  6. package/dist/{chunk-LGPBVBFY.js → chunk-2PWO3WPS.js} +5 -7
  7. package/dist/chunk-2PWO3WPS.js.map +1 -0
  8. package/dist/{chunk-TCGOSLW6.js → chunk-5BK6M6X5.js} +503 -53
  9. package/dist/chunk-5BK6M6X5.js.map +1 -0
  10. package/dist/{chunk-QL2RBFIC.js → chunk-5YQ6VOFZ.js} +2 -2
  11. package/dist/{chunk-D4M2AV65.js → chunk-DTE3SHYK.js} +46 -3
  12. package/dist/chunk-DTE3SHYK.js.map +1 -0
  13. package/dist/{chunk-U7JRFBJO.js → chunk-EUQQVKGQ.js} +2 -2
  14. package/dist/{chunk-YRUJ5KGV.js → chunk-GDCSPMH4.js} +3 -3
  15. package/dist/{chunk-LUQBT2Y4.js → chunk-HHZ3RTEI.js} +2 -2
  16. package/dist/{chunk-JROOQQH6.js → chunk-JBFFAGJK.js} +12 -7
  17. package/dist/chunk-JBFFAGJK.js.map +1 -0
  18. package/dist/{chunk-D4ESHOOJ.js → chunk-KNTJOMWY.js} +3 -3
  19. package/dist/{chunk-JHLALJPB.js → chunk-LD6U3L6O.js} +8 -8
  20. package/dist/{chunk-Q2AYS2QE.js → chunk-LPISXFM4.js} +5 -7
  21. package/dist/chunk-LPISXFM4.js.map +1 -0
  22. package/dist/{chunk-PW5QVY44.js → chunk-NCVR636M.js} +318 -4
  23. package/dist/chunk-NCVR636M.js.map +1 -0
  24. package/dist/{chunk-4VSNNMEU.js → chunk-NRT2ZRUG.js} +8 -3
  25. package/dist/{chunk-4VSNNMEU.js.map → chunk-NRT2ZRUG.js.map} +1 -1
  26. package/dist/{chunk-7NBDELZB.js → chunk-NVCGF2DS.js} +26 -8
  27. package/dist/{chunk-7NBDELZB.js.map → chunk-NVCGF2DS.js.map} +1 -1
  28. package/dist/{chunk-SW62AX75.js → chunk-OKCSSDFC.js} +2 -2
  29. package/dist/{chunk-RR75ZKEV.js → chunk-OQVKLTQY.js} +4 -4
  30. package/dist/{chunk-J3L2RTYK.js → chunk-RBFECYNA.js} +2 -2
  31. package/dist/{chunk-M5XWW7UI.js → chunk-SODRR3HE.js} +8 -1
  32. package/dist/chunk-SODRR3HE.js.map +1 -0
  33. package/dist/{chunk-WOT2WJ4U.js → chunk-T77674VB.js} +4 -4
  34. package/dist/chunk-TFGGH6UB.js +112 -0
  35. package/dist/chunk-TFGGH6UB.js.map +1 -0
  36. package/dist/{chunk-UGUJJ7QP.js → chunk-TNCBMGWB.js} +39 -104
  37. package/dist/chunk-TNCBMGWB.js.map +1 -0
  38. package/dist/{chunk-PIRWYDOH.js → chunk-TRA3R4EC.js} +7 -1
  39. package/dist/chunk-TRA3R4EC.js.map +1 -0
  40. package/dist/{chunk-WDLBFMGG.js → chunk-VQEXXS56.js} +22 -5
  41. package/dist/chunk-VQEXXS56.js.map +1 -0
  42. package/dist/{chunk-OAGY5APE.js → chunk-W3T3QDBN.js} +68 -7
  43. package/dist/chunk-W3T3QDBN.js.map +1 -0
  44. package/dist/{chunk-UULW753C.js → chunk-YYQWCTF6.js} +3 -3
  45. package/dist/{cli-3IMEH4B3.js → cli-WCBTILMW.js} +41 -40
  46. package/dist/{cli-3IMEH4B3.js.map → cli-WCBTILMW.js.map} +1 -1
  47. package/dist/{client-573ALWTB.js → client-MJUZJ5MC.js} +5 -5
  48. package/dist/{config-6RQ7FAEV.js → config-WBCOTJUE.js} +5 -3
  49. package/dist/{config-6RQ7FAEV.js.map → config-WBCOTJUE.js.map} +1 -1
  50. package/dist/{detect-providers-JFE3QLJI.js → detect-providers-PAVE2X6O.js} +4 -4
  51. package/dist/{doctor-JF4FL5GC.js → doctor-GDCLRJOF.js} +13 -11
  52. package/dist/{doctor-JF4FL5GC.js.map → doctor-GDCLRJOF.js.map} +1 -1
  53. package/dist/{executor-AEMKLSPL.js → executor-TCAXFOIS.js} +374 -39
  54. package/dist/executor-TCAXFOIS.js.map +1 -0
  55. package/dist/{init-QJECXRAK.js → init-ZSDMXY4T.js} +16 -15
  56. package/dist/{init-QJECXRAK.js.map → init-ZSDMXY4T.js.map} +1 -1
  57. package/dist/{init-wizard-XVMYHYKS.js → init-wizard-6LDUVR7C.js} +12 -12
  58. package/dist/installer-25TSX4SR.js +13 -0
  59. package/dist/{llm-O46QYWEM.js → llm-T3QVHC3Y.js} +7 -7
  60. package/dist/{loader-4FMGOVWF.js → loader-L2TCAYCT.js} +4 -2
  61. package/dist/{loader-BQ4X4K3F.js → loader-WQKVWL5D.js} +4 -4
  62. package/dist/{main-J572ROIU.js → main-25MKYYKO.js} +452 -103
  63. package/dist/main-25MKYYKO.js.map +1 -0
  64. package/dist/{open-QUZWM6K7.js → open-4YTUNIP3.js} +8 -7
  65. package/dist/{open-QUZWM6K7.js.map → open-4YTUNIP3.js.map} +1 -1
  66. package/dist/{openai-embeddings-HWAKOGUM.js → openai-embeddings-5T5ZP7LO.js} +4 -4
  67. package/dist/{openrouter-GXZK7JXR.js → openrouter-RD2COFC7.js} +4 -4
  68. package/dist/{post-compact-W2ODRZPJ.js → post-compact-E5V4OZJB.js} +7 -7
  69. package/dist/{post-tool-use-3XH3VOB4.js → post-tool-use-Y6UWKCVD.js} +7 -7
  70. package/dist/{post-tool-use-failure-Z53CLPHH.js → post-tool-use-failure-AHFXMNHX.js} +7 -7
  71. package/dist/{pre-compact-G4ISWQVV.js → pre-compact-EI5EV3N7.js} +7 -7
  72. package/dist/{provider-check-CKZW3GQX.js → provider-check-QN7OGXZA.js} +4 -4
  73. package/dist/{registry-ZHUVXGPO.js → registry-2XQMCPA6.js} +5 -5
  74. package/dist/{remove-5AX5LPGC.js → remove-F63WBELE.js} +10 -8
  75. package/dist/{remove-5AX5LPGC.js.map → remove-F63WBELE.js.map} +1 -1
  76. package/dist/{resolution-events-WZHPQQMN.js → resolution-events-BZYMUQ53.js} +4 -4
  77. package/dist/{restart-5IAA7RBM.js → restart-GULUNCMX.js} +9 -8
  78. package/dist/{restart-5IAA7RBM.js.map → restart-GULUNCMX.js.map} +1 -1
  79. package/dist/{search-3S4PPUTG.js → search-NLZMCEAG.js} +9 -8
  80. package/dist/{search-3S4PPUTG.js.map → search-NLZMCEAG.js.map} +1 -1
  81. package/dist/{server-X6LBFCBV.js → server-CXPWUO6H.js} +115 -14
  82. package/dist/server-CXPWUO6H.js.map +1 -0
  83. package/dist/{session-T4Y5AIHM.js → session-XXVEDIQZ.js} +10 -9
  84. package/dist/{session-T4Y5AIHM.js.map → session-XXVEDIQZ.js.map} +1 -1
  85. package/dist/{session-end-FMQ4JJU7.js → session-end-6DP6VTZV.js} +6 -6
  86. package/dist/{session-start-KV2WR6UI.js → session-start-QNAQDF5M.js} +12 -12
  87. package/dist/{setup-llm-YVI7ZSVN.js → setup-llm-ER3B7AZ2.js} +10 -9
  88. package/dist/{setup-llm-YVI7ZSVN.js.map → setup-llm-ER3B7AZ2.js.map} +1 -1
  89. package/dist/src/agent/definitions/agent.yaml +2 -0
  90. package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -0
  91. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -0
  92. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +8 -0
  93. package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +1 -0
  94. package/dist/src/agent/definitions/tasks/review-session.yaml +1 -0
  95. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +155 -0
  96. package/dist/src/agent/definitions/tasks/skill-generate.yaml +210 -0
  97. package/dist/src/agent/definitions/tasks/skill-survey.yaml +149 -0
  98. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -0
  99. package/dist/src/agent/definitions/tasks/title-summary.yaml +1 -0
  100. package/dist/src/agent/prompts/agent.md +29 -0
  101. package/dist/src/cli.js +1 -1
  102. package/dist/src/daemon/main.js +1 -1
  103. package/dist/src/hooks/post-tool-use.js +1 -1
  104. package/dist/src/hooks/session-end.js +1 -1
  105. package/dist/src/hooks/session-start.js +1 -1
  106. package/dist/src/hooks/stop.js +1 -1
  107. package/dist/src/hooks/user-prompt-submit.js +1 -1
  108. package/dist/src/mcp/server.js +1 -1
  109. package/dist/src/worker/src/index.ts +3 -0
  110. package/dist/src/worker/src/schema.ts +56 -0
  111. package/dist/{stats-EFF4XRAO.js → stats-VQ7XMOCU.js} +10 -9
  112. package/dist/{stats-EFF4XRAO.js.map → stats-VQ7XMOCU.js.map} +1 -1
  113. package/dist/{stop-SIQJWOPU.js → stop-VTO2KIRG.js} +6 -6
  114. package/dist/{stop-failure-EHYMRRER.js → stop-failure-C5T6LJQR.js} +7 -7
  115. package/dist/{subagent-start-AMS3YX5E.js → subagent-start-NZF42NKF.js} +7 -7
  116. package/dist/{subagent-stop-KVQ52RFD.js → subagent-stop-UV5ECFVU.js} +7 -7
  117. package/dist/{task-completed-JFQK3X4Z.js → task-completed-3SV6TL3V.js} +7 -7
  118. package/dist/{team-VU5MGPGG.js → team-XSJXLBZX.js} +51 -25
  119. package/dist/team-XSJXLBZX.js.map +1 -0
  120. package/dist/ui/assets/index-BeygBZGu.css +1 -0
  121. package/dist/ui/assets/index-CbGC0T_o.js +822 -0
  122. package/dist/ui/index.html +2 -2
  123. package/dist/{update-BO3DEE7S.js → update-5GXOQIY5.js} +8 -7
  124. package/dist/{update-BO3DEE7S.js.map → update-5GXOQIY5.js.map} +1 -1
  125. package/dist/{user-prompt-submit-EZMRI7SR.js → user-prompt-submit-VLQG77A6.js} +6 -6
  126. package/dist/{verify-MQAANTUR.js → verify-WF7U3NQW.js} +8 -8
  127. package/dist/{version-IEMGX4RA.js → version-RGX7TZ7V.js} +2 -2
  128. package/dist/version-RGX7TZ7V.js.map +1 -0
  129. package/package.json +6 -6
  130. package/dist/chunk-D4M2AV65.js.map +0 -1
  131. package/dist/chunk-JROOQQH6.js.map +0 -1
  132. package/dist/chunk-LGPBVBFY.js.map +0 -1
  133. package/dist/chunk-M5XWW7UI.js.map +0 -1
  134. package/dist/chunk-OAGY5APE.js.map +0 -1
  135. package/dist/chunk-PIRWYDOH.js.map +0 -1
  136. package/dist/chunk-PW5QVY44.js.map +0 -1
  137. package/dist/chunk-Q2AYS2QE.js.map +0 -1
  138. package/dist/chunk-TCGOSLW6.js.map +0 -1
  139. package/dist/chunk-UGUJJ7QP.js.map +0 -1
  140. package/dist/chunk-WDLBFMGG.js.map +0 -1
  141. package/dist/executor-AEMKLSPL.js.map +0 -1
  142. package/dist/main-J572ROIU.js.map +0 -1
  143. package/dist/server-X6LBFCBV.js.map +0 -1
  144. package/dist/team-VU5MGPGG.js.map +0 -1
  145. package/dist/ui/assets/index-BGbil7f1.css +0 -1
  146. package/dist/ui/assets/index-ZSGlKT25.js +0 -804
  147. /package/dist/{chunk-QL2RBFIC.js.map → chunk-5YQ6VOFZ.js.map} +0 -0
  148. /package/dist/{chunk-U7JRFBJO.js.map → chunk-EUQQVKGQ.js.map} +0 -0
  149. /package/dist/{chunk-YRUJ5KGV.js.map → chunk-GDCSPMH4.js.map} +0 -0
  150. /package/dist/{chunk-LUQBT2Y4.js.map → chunk-HHZ3RTEI.js.map} +0 -0
  151. /package/dist/{chunk-D4ESHOOJ.js.map → chunk-KNTJOMWY.js.map} +0 -0
  152. /package/dist/{chunk-JHLALJPB.js.map → chunk-LD6U3L6O.js.map} +0 -0
  153. /package/dist/{chunk-SW62AX75.js.map → chunk-OKCSSDFC.js.map} +0 -0
  154. /package/dist/{chunk-RR75ZKEV.js.map → chunk-OQVKLTQY.js.map} +0 -0
  155. /package/dist/{chunk-J3L2RTYK.js.map → chunk-RBFECYNA.js.map} +0 -0
  156. /package/dist/{chunk-WOT2WJ4U.js.map → chunk-T77674VB.js.map} +0 -0
  157. /package/dist/{chunk-UULW753C.js.map → chunk-YYQWCTF6.js.map} +0 -0
  158. /package/dist/{client-573ALWTB.js.map → client-MJUZJ5MC.js.map} +0 -0
  159. /package/dist/{detect-providers-JFE3QLJI.js.map → detect-providers-PAVE2X6O.js.map} +0 -0
  160. /package/dist/{init-wizard-XVMYHYKS.js.map → init-wizard-6LDUVR7C.js.map} +0 -0
  161. /package/dist/{llm-O46QYWEM.js.map → installer-25TSX4SR.js.map} +0 -0
  162. /package/dist/{loader-4FMGOVWF.js.map → llm-T3QVHC3Y.js.map} +0 -0
  163. /package/dist/{loader-BQ4X4K3F.js.map → loader-L2TCAYCT.js.map} +0 -0
  164. /package/dist/{openai-embeddings-HWAKOGUM.js.map → loader-WQKVWL5D.js.map} +0 -0
  165. /package/dist/{openrouter-GXZK7JXR.js.map → openai-embeddings-5T5ZP7LO.js.map} +0 -0
  166. /package/dist/{provider-check-CKZW3GQX.js.map → openrouter-RD2COFC7.js.map} +0 -0
  167. /package/dist/{post-compact-W2ODRZPJ.js.map → post-compact-E5V4OZJB.js.map} +0 -0
  168. /package/dist/{post-tool-use-3XH3VOB4.js.map → post-tool-use-Y6UWKCVD.js.map} +0 -0
  169. /package/dist/{post-tool-use-failure-Z53CLPHH.js.map → post-tool-use-failure-AHFXMNHX.js.map} +0 -0
  170. /package/dist/{pre-compact-G4ISWQVV.js.map → pre-compact-EI5EV3N7.js.map} +0 -0
  171. /package/dist/{registry-ZHUVXGPO.js.map → provider-check-QN7OGXZA.js.map} +0 -0
  172. /package/dist/{resolution-events-WZHPQQMN.js.map → registry-2XQMCPA6.js.map} +0 -0
  173. /package/dist/{version-IEMGX4RA.js.map → resolution-events-BZYMUQ53.js.map} +0 -0
  174. /package/dist/{session-end-FMQ4JJU7.js.map → session-end-6DP6VTZV.js.map} +0 -0
  175. /package/dist/{session-start-KV2WR6UI.js.map → session-start-QNAQDF5M.js.map} +0 -0
  176. /package/dist/{stop-SIQJWOPU.js.map → stop-VTO2KIRG.js.map} +0 -0
  177. /package/dist/{stop-failure-EHYMRRER.js.map → stop-failure-C5T6LJQR.js.map} +0 -0
  178. /package/dist/{subagent-start-AMS3YX5E.js.map → subagent-start-NZF42NKF.js.map} +0 -0
  179. /package/dist/{subagent-stop-KVQ52RFD.js.map → subagent-stop-UV5ECFVU.js.map} +0 -0
  180. /package/dist/{task-completed-JFQK3X4Z.js.map → task-completed-3SV6TL3V.js.map} +0 -0
  181. /package/dist/{user-prompt-submit-EZMRI7SR.js.map → user-prompt-submit-VLQG77A6.js.map} +0 -0
  182. /package/dist/{verify-MQAANTUR.js.map → verify-WF7U3NQW.js.map} +0 -0
@@ -0,0 +1,149 @@
1
+ name: skill-survey
2
+ displayName: Skill Candidate Survey
3
+ description: >-
4
+ Analyze vault knowledge for procedural skill candidates. Identifies
5
+ clusters of related sessions, spores, and plans that describe how
6
+ to accomplish tasks in this project.
7
+ agent: myco-agent
8
+ prompt: >-
9
+ Survey the vault knowledge graph for procedural skill candidates.
10
+ isDefault: false
11
+ model: claude-sonnet-4-6
12
+ maxTurns: 40
13
+ timeoutSeconds: 600
14
+ schedule:
15
+ enabled: true
16
+ intervalSeconds: 600
17
+ runIn:
18
+ - idle
19
+ phases:
20
+ - name: explore-spores
21
+ prompt: |
22
+ Explore ALL spores in the vault to identify procedural patterns.
23
+ You are one of three parallel exploration phases — focus only on spores.
24
+
25
+ 1. Query wisdom spores first (vault_spores, observation_type: wisdom).
26
+ These are the highest signal — synthesized from multiple sessions.
27
+
28
+ 2. Query decisions, discoveries, and gotchas. Paginate through ALL
29
+ active spores (use offset parameter), not just the first page.
30
+
31
+ 3. Use vault_entities to see what components and concepts exist.
32
+ High-mention-count entities often indicate areas that need skills.
33
+
34
+ 4. Read the digest (vault_read_digest) for a high-level overview.
35
+
36
+ For each finding, note: what procedure does this relate to?
37
+ Group findings by procedural topic ("how to do X").
38
+ tools:
39
+ - vault_spores
40
+ - vault_entities
41
+ - vault_edges
42
+ - vault_read_digest
43
+ maxTurns: 8
44
+ required: true
45
+
46
+ - name: explore-sessions
47
+ prompt: |
48
+ Explore ALL sessions in the vault to identify procedural workflows.
49
+ You are one of three parallel exploration phases — focus only on sessions.
50
+
51
+ 1. List all sessions (vault_sessions). Paginate through them.
52
+ Session summaries describe workflows and multi-step implementations.
53
+
54
+ 2. Look for recurring themes — "3+ sessions touched the same component"
55
+ is a strong skill candidate signal.
56
+
57
+ 3. Use vault_search_fts to search session content for procedural
58
+ keywords: "how to", "step", "migration", "refactor", "debug",
59
+ "configure", "install", "deploy".
60
+
61
+ For each finding, note: what procedure does this relate to?
62
+ Group findings by procedural topic ("how to do X").
63
+ tools:
64
+ - vault_sessions
65
+ - vault_search_fts
66
+ maxTurns: 8
67
+ required: true
68
+
69
+ - name: explore-plans
70
+ prompt: |
71
+ Explore ALL plans and artifacts in the vault to identify procedures.
72
+ You are one of three parallel exploration phases — focus only on plans.
73
+
74
+ Plans contain explicit step-by-step procedures and design decisions.
75
+ They are often the most directly skill-ready content.
76
+
77
+ 1. Use vault_search_semantic with broad queries to find plans:
78
+ - "implementation plan design architecture"
79
+ - "migration refactor setup configuration"
80
+ - "testing deployment workflow pipeline"
81
+ - "debugging troubleshooting fix"
82
+
83
+ 2. Use vault_search_fts to search for specific procedural terms
84
+ across plans and artifacts.
85
+
86
+ For each finding, note: what procedure does this relate to?
87
+ Group findings by procedural topic ("how to do X").
88
+ tools:
89
+ - vault_search_semantic
90
+ - vault_search_fts
91
+ maxTurns: 8
92
+ required: true
93
+
94
+ - name: evaluate
95
+ prompt: |
96
+ Three parallel exploration phases have completed — one explored
97
+ spores and entities, one explored sessions, one explored plans.
98
+ Their findings are in the prior context.
99
+
100
+ For each procedural cluster identified across the exploration phases:
101
+
102
+ 1. Is this a procedure (how to do something in this project)?
103
+ Only procedures become skills. "What is X" is not a skill.
104
+ "How to do X" is a skill.
105
+
106
+ 2. Is there enough cross-session evidence?
107
+ Minimum: knowledge from 2+ sessions, 3+ source items across
108
+ sessions, spores, and plans.
109
+
110
+ 3. Does an existing skill or candidate already cover this topic?
111
+ Use vault_skill_candidates (action: list) to check.
112
+
113
+ 4. Score confidence (0.0-1.0) based on:
114
+ - Knowledge density (more sources = higher)
115
+ - Cross-session evidence (wider = higher)
116
+ - Presence of wisdom spores (higher quality signal)
117
+ - Presence of plans with step-by-step procedures (higher)
118
+
119
+ For each valid candidate, use vault_skill_candidates (action: create)
120
+ with topic, rationale, confidence, and source_ids (JSON array of
121
+ {id, type} objects referencing the spores, sessions, and plans).
122
+
123
+ IMPORTANT: Write the rationale field as markdown. Use:
124
+ - **Bold** for key terms and pass/fail verdicts
125
+ - Numbered lists for the procedure steps identified
126
+ - Inline `code` for file paths, function names, and config keys
127
+ - A brief summary sentence, then the evidence structure
128
+
129
+ The rationale is displayed directly to the user in the dashboard.
130
+
131
+ If an existing candidate has new evidence, use vault_skill_candidates
132
+ (action: update) to increase confidence and add source_ids.
133
+
134
+ Dismiss candidates whose underlying knowledge has been superseded
135
+ (action: update, status: dismissed).
136
+
137
+ Report a summary of candidates created, updated, and dismissed
138
+ using vault_report.
139
+ tools:
140
+ - vault_skill_candidates
141
+ - vault_skill_records
142
+ - vault_set_state
143
+ - vault_report
144
+ maxTurns: 8
145
+ required: true
146
+ dependsOn:
147
+ - explore-spores
148
+ - explore-sessions
149
+ - explore-plans
@@ -13,6 +13,7 @@ description: >
13
13
  Records resolution events for audit trail.
14
14
  agent: myco-agent
15
15
  isDefault: false
16
+ model: claude-sonnet-4-6
16
17
  maxTurns: 30
17
18
  timeoutSeconds: 300
18
19
 
@@ -13,6 +13,7 @@ description: >
13
13
  title and informative summary.
14
14
  agent: myco-agent
15
15
  isDefault: false
16
+ model: claude-haiku-4-5-20251001
16
17
  maxTurns: 15
17
18
  timeoutSeconds: 120
18
19
 
@@ -93,6 +93,35 @@ Three types only:
93
93
 
94
94
  Set `confidence` below 1.0 when the relationship is inferred rather than explicitly stated. Include `session_id` for provenance.
95
95
 
96
+ ## Skill Lifecycle Tools
97
+
98
+ ### vault_skill_candidates
99
+
100
+ Query and manage skill candidates — observations that may become project skills.
101
+
102
+ - **list**: Browse pending/approved/dismissed candidates. Filter with `status` param.
103
+ - **get**: Retrieve a specific candidate by `id`.
104
+ - **create**: Register a new candidate with `topic` and `rationale`.
105
+ - **update**: Change status (e.g., approve with `status: 'approved'`), add source_ids, or link to a skill.
106
+ - **delete**: Remove a candidate by `id`.
107
+
108
+ ### vault_skill_records
109
+
110
+ Query and manage materialized skill records.
111
+
112
+ - **list**: Browse skills. Filter with `status` (active, stale, retired).
113
+ - **get**: Retrieve a specific skill by `id` or name, including lineage and usage.
114
+ - **update**: Change status or description.
115
+ - **delete**: Remove a skill record and its lineage/usage data.
116
+
117
+ ### vault_write_skill
118
+
119
+ Write or update a skill file on disk with structural validation and automatic DB record management.
120
+
121
+ Required fields: `name` (kebab-case directory name), `display_name`, `description`, `content` (full SKILL.md with YAML frontmatter).
122
+
123
+ Quality gate enforces: YAML frontmatter present, name/description/managed_by fields, `myco:` name prefix, `managed_by: myco`, ≤500 lines.
124
+
96
125
  ## Processing Protocol
97
126
 
98
127
  When running as a single-query task (no phased executor), follow this general sequence:
package/dist/src/cli.js CHANGED
@@ -2,5 +2,5 @@
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
3
 
4
4
  // src/entries/cli.ts
5
- await import("../cli-3IMEH4B3.js");
5
+ await import("../cli-WCBTILMW.js");
6
6
  //# sourceMappingURL=cli.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/daemon.ts
4
- var { main } = await import("../../main-J572ROIU.js");
4
+ var { main } = await import("../../main-25MKYYKO.js");
5
5
  await main();
6
6
  //# sourceMappingURL=main.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/post-tool-use.ts
4
- var { main } = await import("../../post-tool-use-3XH3VOB4.js");
4
+ var { main } = await import("../../post-tool-use-Y6UWKCVD.js");
5
5
  await main();
6
6
  //# sourceMappingURL=post-tool-use.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-end.ts
4
- var { main } = await import("../../session-end-FMQ4JJU7.js");
4
+ var { main } = await import("../../session-end-6DP6VTZV.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-end.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-start.ts
4
- var { main } = await import("../../session-start-KV2WR6UI.js");
4
+ var { main } = await import("../../session-start-QNAQDF5M.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-start.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/stop.ts
4
- var { main } = await import("../../stop-SIQJWOPU.js");
4
+ var { main } = await import("../../stop-VTO2KIRG.js");
5
5
  await main();
6
6
  //# sourceMappingURL=stop.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/user-prompt-submit.ts
4
- var { main } = await import("../../user-prompt-submit-EZMRI7SR.js");
4
+ var { main } = await import("../../user-prompt-submit-VLQG77A6.js");
5
5
  await main();
6
6
  //# sourceMappingURL=user-prompt-submit.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/mcp-server.ts
4
- var { main } = await import("../../server-X6LBFCBV.js");
4
+ var { main } = await import("../../server-CXPWUO6H.js");
5
5
  await main();
6
6
  //# sourceMappingURL=server.js.map
@@ -41,6 +41,9 @@ const SYNCED_TABLES = [
41
41
  'plans',
42
42
  'artifacts',
43
43
  'digest_extracts',
44
+ 'skill_candidates',
45
+ 'skill_records',
46
+ 'skill_usage',
44
47
  ] as const;
45
48
 
46
49
  type SyncedTable = (typeof SYNCED_TABLES)[number];
@@ -183,6 +183,55 @@ const DIGEST_EXTRACTS_TABLE = `
183
183
  PRIMARY KEY (id, machine_id)
184
184
  )`;
185
185
 
186
+ const SKILL_CANDIDATES_TABLE = `
187
+ CREATE TABLE IF NOT EXISTS skill_candidates (
188
+ id TEXT NOT NULL,
189
+ machine_id TEXT NOT NULL,
190
+ agent_id TEXT NOT NULL,
191
+ topic TEXT NOT NULL,
192
+ rationale TEXT NOT NULL,
193
+ confidence REAL NOT NULL DEFAULT 0.0,
194
+ status TEXT NOT NULL DEFAULT 'identified',
195
+ source_ids TEXT NOT NULL DEFAULT '[]',
196
+ skill_id TEXT,
197
+ created_at INTEGER NOT NULL,
198
+ updated_at INTEGER NOT NULL,
199
+ synced_at INTEGER,
200
+ PRIMARY KEY (id, machine_id)
201
+ )`;
202
+
203
+ const SKILL_RECORDS_TABLE = `
204
+ CREATE TABLE IF NOT EXISTS skill_records (
205
+ id TEXT NOT NULL,
206
+ machine_id TEXT NOT NULL,
207
+ agent_id TEXT NOT NULL,
208
+ name TEXT NOT NULL,
209
+ display_name TEXT NOT NULL,
210
+ description TEXT NOT NULL,
211
+ status TEXT NOT NULL DEFAULT 'active',
212
+ generation INTEGER NOT NULL DEFAULT 1,
213
+ candidate_id TEXT,
214
+ source_ids TEXT NOT NULL DEFAULT '[]',
215
+ path TEXT NOT NULL,
216
+ usage_count INTEGER NOT NULL DEFAULT 0,
217
+ last_used_at INTEGER,
218
+ created_at INTEGER NOT NULL,
219
+ updated_at INTEGER NOT NULL,
220
+ properties TEXT NOT NULL DEFAULT '{}',
221
+ synced_at INTEGER,
222
+ PRIMARY KEY (id, machine_id)
223
+ )`;
224
+
225
+ const SKILL_USAGE_TABLE = `
226
+ CREATE TABLE IF NOT EXISTS skill_usage (
227
+ id TEXT NOT NULL,
228
+ machine_id TEXT NOT NULL,
229
+ skill_id TEXT NOT NULL,
230
+ session_id TEXT NOT NULL,
231
+ detected_at INTEGER NOT NULL,
232
+ PRIMARY KEY (id, machine_id)
233
+ )`;
234
+
186
235
  const NODES_TABLE = `
187
236
  CREATE TABLE IF NOT EXISTS nodes (
188
237
  machine_id TEXT PRIMARY KEY,
@@ -209,6 +258,10 @@ const SECONDARY_INDEXES = [
209
258
  'CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges (source_id, source_type)',
210
259
  'CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges (target_id, target_type)',
211
260
  'CREATE INDEX IF NOT EXISTS idx_entities_type ON entities (type)',
261
+ 'CREATE INDEX IF NOT EXISTS idx_skill_candidates_status ON skill_candidates (status)',
262
+ 'CREATE INDEX IF NOT EXISTS idx_skill_records_status ON skill_records (status)',
263
+ 'CREATE INDEX IF NOT EXISTS idx_skill_records_name ON skill_records (name, machine_id)',
264
+ 'CREATE INDEX IF NOT EXISTS idx_skill_usage_skill_id ON skill_usage (skill_id)',
212
265
  ];
213
266
 
214
267
  const ALL_DDLS = [
@@ -222,6 +275,9 @@ const ALL_DDLS = [
222
275
  PLANS_TABLE,
223
276
  ARTIFACTS_TABLE,
224
277
  DIGEST_EXTRACTS_TABLE,
278
+ SKILL_CANDIDATES_TABLE,
279
+ SKILL_RECORDS_TABLE,
280
+ SKILL_USAGE_TABLE,
225
281
  NODES_TABLE,
226
282
  TEAM_CONFIG_TABLE,
227
283
  ];
@@ -1,19 +1,20 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  gatherStats
4
- } from "./chunk-WOT2WJ4U.js";
4
+ } from "./chunk-T77674VB.js";
5
5
  import {
6
6
  initVaultDb
7
- } from "./chunk-UGUJJ7QP.js";
7
+ } from "./chunk-TFGGH6UB.js";
8
8
  import "./chunk-SAKJMNSR.js";
9
- import "./chunk-LUQBT2Y4.js";
10
- import "./chunk-OAGY5APE.js";
9
+ import "./chunk-TNCBMGWB.js";
10
+ import "./chunk-HHZ3RTEI.js";
11
+ import "./chunk-W3T3QDBN.js";
11
12
  import "./chunk-MYX5NCRH.js";
12
- import "./chunk-WDLBFMGG.js";
13
- import "./chunk-PIRWYDOH.js";
14
- import "./chunk-S6I62FAH.js";
15
- import "./chunk-U7JRFBJO.js";
13
+ import "./chunk-VQEXXS56.js";
14
+ import "./chunk-EUQQVKGQ.js";
16
15
  import "./chunk-LPUQPDC2.js";
16
+ import "./chunk-TRA3R4EC.js";
17
+ import "./chunk-S6I62FAH.js";
17
18
  import "./chunk-D7TYRPRM.js";
18
19
  import "./chunk-E4VLWIJC.js";
19
20
  import "./chunk-KH64DHOY.js";
@@ -91,4 +92,4 @@ function formatUptime(seconds) {
91
92
  export {
92
93
  run
93
94
  };
94
- //# sourceMappingURL=stats-EFF4XRAO.js.map
95
+ //# sourceMappingURL=stats-VQ7XMOCU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/stats.ts"],"sourcesContent":["/**\n * CLI: myco stats — display vault statistics.\n *\n * Opens the SQLite database directly (WAL mode allows concurrent reads).\n * Does NOT require the daemon to be running.\n */\n\nimport type { V2Stats } from '../services/stats.js';\nimport { gatherStats } from '../services/stats.js';\nimport { initVaultDb } from './shared.js';\n\nexport async function run(_args: string[], vaultDir: string): Promise<void> {\n const cleanup = initVaultDb(vaultDir);\n let stats: V2Stats;\n try {\n stats = gatherStats(vaultDir);\n } catch (err) {\n cleanup();\n console.error('Failed to read vault database:', (err as Error).message);\n process.exit(1);\n }\n cleanup();\n\n console.log('=== Myco Vault ===');\n console.log(`Path: ${stats.vault.path}`);\n console.log(`Name: ${stats.vault.name}`);\n\n console.log('\\n--- Data ---');\n console.log(`Sessions: ${stats.vault.session_count}`);\n console.log(`Batches: ${stats.vault.batch_count}`);\n console.log(`Spores: ${stats.vault.spore_count}`);\n console.log(`Plans: ${stats.vault.plan_count}`);\n console.log(`Artifacts: ${stats.vault.artifact_count}`);\n console.log(`Entities: ${stats.vault.entity_count}`);\n console.log(`Edges: ${stats.vault.edge_count}`);\n\n console.log('\\n--- Embeddings ---');\n console.log(`Provider: ${stats.embedding.provider} (${stats.embedding.model})`);\n console.log(`Embedded: ${stats.embedding.embedded_count} / ${stats.embedding.total_embeddable}`);\n if (stats.embedding.queue_depth > 0) {\n console.log(`Queue: ${stats.embedding.queue_depth} pending`);\n }\n\n console.log('\\n--- Agent ---');\n if (stats.agent.total_runs === 0) {\n console.log('No runs yet');\n } else {\n const lastAt = stats.agent.last_run_at\n ? new Date(stats.agent.last_run_at * 1000).toISOString()\n : 'never';\n console.log(`Last run: ${lastAt} (${stats.agent.last_run_status ?? 'unknown'})`);\n console.log(`Total runs: ${stats.agent.total_runs}`);\n }\n if (stats.unprocessed_batches > 0) {\n console.log(`Pending: ${stats.unprocessed_batches} unprocessed batch(es)`);\n }\n\n console.log('\\n--- Digest ---');\n if (stats.digest.tiers_available.length === 0) {\n console.log('No digest extracts yet');\n } else {\n const generatedAt = stats.digest.generated_at\n ? new Date(stats.digest.generated_at * 1000).toISOString()\n : 'unknown';\n console.log(`Tiers: ${stats.digest.tiers_available.join(', ')}`);\n console.log(`Freshest: tier ${stats.digest.freshest_tier} (generated ${generatedAt})`);\n }\n\n // Daemon section — from the live daemon stats\n const { pid, port, version, uptime_seconds, active_sessions } = stats.daemon;\n if (pid > 0) {\n console.log('\\n--- Daemon ---');\n console.log(`PID: ${pid} (running)`);\n console.log(`Port: ${port}`);\n if (version) console.log(`Version: ${version}`);\n if (uptime_seconds > 0) {\n console.log(`Uptime: ${formatUptime(uptime_seconds)}`);\n }\n console.log(`Dashboard: http://localhost:${port}/`);\n console.log(`Sessions: ${active_sessions.length}`);\n }\n}\n\nfunction formatUptime(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (h > 0) return `${h}h ${m}m ${s}s`;\n if (m > 0) return `${m}m ${s}s`;\n return `${s}s`;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli/stats.ts"],"sourcesContent":["/**\n * CLI: myco stats — display vault statistics.\n *\n * Opens the SQLite database directly (WAL mode allows concurrent reads).\n * Does NOT require the daemon to be running.\n */\n\nimport type { V2Stats } from '../services/stats.js';\nimport { gatherStats } from '../services/stats.js';\nimport { initVaultDb } from './shared.js';\n\nexport async function run(_args: string[], vaultDir: string): Promise<void> {\n const cleanup = initVaultDb(vaultDir);\n let stats: V2Stats;\n try {\n stats = gatherStats(vaultDir);\n } catch (err) {\n cleanup();\n console.error('Failed to read vault database:', (err as Error).message);\n process.exit(1);\n }\n cleanup();\n\n console.log('=== Myco Vault ===');\n console.log(`Path: ${stats.vault.path}`);\n console.log(`Name: ${stats.vault.name}`);\n\n console.log('\\n--- Data ---');\n console.log(`Sessions: ${stats.vault.session_count}`);\n console.log(`Batches: ${stats.vault.batch_count}`);\n console.log(`Spores: ${stats.vault.spore_count}`);\n console.log(`Plans: ${stats.vault.plan_count}`);\n console.log(`Artifacts: ${stats.vault.artifact_count}`);\n console.log(`Entities: ${stats.vault.entity_count}`);\n console.log(`Edges: ${stats.vault.edge_count}`);\n\n console.log('\\n--- Embeddings ---');\n console.log(`Provider: ${stats.embedding.provider} (${stats.embedding.model})`);\n console.log(`Embedded: ${stats.embedding.embedded_count} / ${stats.embedding.total_embeddable}`);\n if (stats.embedding.queue_depth > 0) {\n console.log(`Queue: ${stats.embedding.queue_depth} pending`);\n }\n\n console.log('\\n--- Agent ---');\n if (stats.agent.total_runs === 0) {\n console.log('No runs yet');\n } else {\n const lastAt = stats.agent.last_run_at\n ? new Date(stats.agent.last_run_at * 1000).toISOString()\n : 'never';\n console.log(`Last run: ${lastAt} (${stats.agent.last_run_status ?? 'unknown'})`);\n console.log(`Total runs: ${stats.agent.total_runs}`);\n }\n if (stats.unprocessed_batches > 0) {\n console.log(`Pending: ${stats.unprocessed_batches} unprocessed batch(es)`);\n }\n\n console.log('\\n--- Digest ---');\n if (stats.digest.tiers_available.length === 0) {\n console.log('No digest extracts yet');\n } else {\n const generatedAt = stats.digest.generated_at\n ? new Date(stats.digest.generated_at * 1000).toISOString()\n : 'unknown';\n console.log(`Tiers: ${stats.digest.tiers_available.join(', ')}`);\n console.log(`Freshest: tier ${stats.digest.freshest_tier} (generated ${generatedAt})`);\n }\n\n // Daemon section — from the live daemon stats\n const { pid, port, version, uptime_seconds, active_sessions } = stats.daemon;\n if (pid > 0) {\n console.log('\\n--- Daemon ---');\n console.log(`PID: ${pid} (running)`);\n console.log(`Port: ${port}`);\n if (version) console.log(`Version: ${version}`);\n if (uptime_seconds > 0) {\n console.log(`Uptime: ${formatUptime(uptime_seconds)}`);\n }\n console.log(`Dashboard: http://localhost:${port}/`);\n console.log(`Sessions: ${active_sessions.length}`);\n }\n}\n\nfunction formatUptime(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (h > 0) return `${h}h ${m}m ${s}s`;\n if (m > 0) return `${m}m ${s}s`;\n return `${s}s`;\n}\n"],"mappings":"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","names":[]}
@@ -2,15 +2,15 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  normalizeHookInput,
4
4
  readStdin
5
- } from "./chunk-RR75ZKEV.js";
5
+ } from "./chunk-OQVKLTQY.js";
6
6
  import {
7
7
  DaemonClient
8
- } from "./chunk-WDLBFMGG.js";
9
- import "./chunk-PIRWYDOH.js";
10
- import "./chunk-S6I62FAH.js";
11
- import "./chunk-U7JRFBJO.js";
8
+ } from "./chunk-VQEXXS56.js";
9
+ import "./chunk-EUQQVKGQ.js";
12
10
  import "./chunk-QFMBZ72S.js";
13
11
  import "./chunk-LPUQPDC2.js";
12
+ import "./chunk-TRA3R4EC.js";
13
+ import "./chunk-S6I62FAH.js";
14
14
  import "./chunk-D7TYRPRM.js";
15
15
  import "./chunk-E4VLWIJC.js";
16
16
  import "./chunk-KH64DHOY.js";
@@ -45,4 +45,4 @@ async function main() {
45
45
  export {
46
46
  main
47
47
  };
48
- //# sourceMappingURL=stop-SIQJWOPU.js.map
48
+ //# sourceMappingURL=stop-VTO2KIRG.js.map
@@ -1,15 +1,15 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-UULW753C.js";
4
+ } from "./chunk-YYQWCTF6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-RR75ZKEV.js";
7
- import "./chunk-WDLBFMGG.js";
8
- import "./chunk-PIRWYDOH.js";
9
- import "./chunk-S6I62FAH.js";
10
- import "./chunk-U7JRFBJO.js";
6
+ import "./chunk-OQVKLTQY.js";
7
+ import "./chunk-VQEXXS56.js";
8
+ import "./chunk-EUQQVKGQ.js";
11
9
  import "./chunk-QFMBZ72S.js";
12
10
  import "./chunk-LPUQPDC2.js";
11
+ import "./chunk-TRA3R4EC.js";
12
+ import "./chunk-S6I62FAH.js";
13
13
  import "./chunk-D7TYRPRM.js";
14
14
  import "./chunk-E4VLWIJC.js";
15
15
  import "./chunk-KH64DHOY.js";
@@ -27,4 +27,4 @@ async function main() {
27
27
  export {
28
28
  main
29
29
  };
30
- //# sourceMappingURL=stop-failure-EHYMRRER.js.map
30
+ //# sourceMappingURL=stop-failure-C5T6LJQR.js.map
@@ -1,15 +1,15 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-UULW753C.js";
4
+ } from "./chunk-YYQWCTF6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-RR75ZKEV.js";
7
- import "./chunk-WDLBFMGG.js";
8
- import "./chunk-PIRWYDOH.js";
9
- import "./chunk-S6I62FAH.js";
10
- import "./chunk-U7JRFBJO.js";
6
+ import "./chunk-OQVKLTQY.js";
7
+ import "./chunk-VQEXXS56.js";
8
+ import "./chunk-EUQQVKGQ.js";
11
9
  import "./chunk-QFMBZ72S.js";
12
10
  import "./chunk-LPUQPDC2.js";
11
+ import "./chunk-TRA3R4EC.js";
12
+ import "./chunk-S6I62FAH.js";
13
13
  import "./chunk-D7TYRPRM.js";
14
14
  import "./chunk-E4VLWIJC.js";
15
15
  import "./chunk-KH64DHOY.js";
@@ -27,4 +27,4 @@ async function main() {
27
27
  export {
28
28
  main
29
29
  };
30
- //# sourceMappingURL=subagent-start-AMS3YX5E.js.map
30
+ //# sourceMappingURL=subagent-start-NZF42NKF.js.map
@@ -1,15 +1,15 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-UULW753C.js";
4
+ } from "./chunk-YYQWCTF6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-RR75ZKEV.js";
7
- import "./chunk-WDLBFMGG.js";
8
- import "./chunk-PIRWYDOH.js";
9
- import "./chunk-S6I62FAH.js";
10
- import "./chunk-U7JRFBJO.js";
6
+ import "./chunk-OQVKLTQY.js";
7
+ import "./chunk-VQEXXS56.js";
8
+ import "./chunk-EUQQVKGQ.js";
11
9
  import "./chunk-QFMBZ72S.js";
12
10
  import "./chunk-LPUQPDC2.js";
11
+ import "./chunk-TRA3R4EC.js";
12
+ import "./chunk-S6I62FAH.js";
13
13
  import "./chunk-D7TYRPRM.js";
14
14
  import "./chunk-E4VLWIJC.js";
15
15
  import "./chunk-KH64DHOY.js";
@@ -29,4 +29,4 @@ async function main() {
29
29
  export {
30
30
  main
31
31
  };
32
- //# sourceMappingURL=subagent-stop-KVQ52RFD.js.map
32
+ //# sourceMappingURL=subagent-stop-UV5ECFVU.js.map
@@ -1,15 +1,15 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-UULW753C.js";
4
+ } from "./chunk-YYQWCTF6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-RR75ZKEV.js";
7
- import "./chunk-WDLBFMGG.js";
8
- import "./chunk-PIRWYDOH.js";
9
- import "./chunk-S6I62FAH.js";
10
- import "./chunk-U7JRFBJO.js";
6
+ import "./chunk-OQVKLTQY.js";
7
+ import "./chunk-VQEXXS56.js";
8
+ import "./chunk-EUQQVKGQ.js";
11
9
  import "./chunk-QFMBZ72S.js";
12
10
  import "./chunk-LPUQPDC2.js";
11
+ import "./chunk-TRA3R4EC.js";
12
+ import "./chunk-S6I62FAH.js";
13
13
  import "./chunk-D7TYRPRM.js";
14
14
  import "./chunk-E4VLWIJC.js";
15
15
  import "./chunk-KH64DHOY.js";
@@ -28,4 +28,4 @@ async function main() {
28
28
  export {
29
29
  main
30
30
  };
31
- //# sourceMappingURL=task-completed-JFQK3X4Z.js.map
31
+ //# sourceMappingURL=task-completed-3SV6TL3V.js.map