@codemieai/code 0.0.32 → 0.0.34

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 (203) hide show
  1. package/README.md +73 -7
  2. package/bin/codemie-opencode.js +11 -0
  3. package/dist/agents/codemie-code/agent.d.ts +17 -1
  4. package/dist/agents/codemie-code/agent.d.ts.map +1 -1
  5. package/dist/agents/codemie-code/agent.js +62 -3
  6. package/dist/agents/codemie-code/agent.js.map +1 -1
  7. package/dist/agents/codemie-code/index.d.ts +1 -0
  8. package/dist/agents/codemie-code/index.d.ts.map +1 -1
  9. package/dist/agents/codemie-code/index.js +28 -2
  10. package/dist/agents/codemie-code/index.js.map +1 -1
  11. package/dist/agents/codemie-code/prompts.d.ts +12 -3
  12. package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
  13. package/dist/agents/codemie-code/prompts.js +25 -5
  14. package/dist/agents/codemie-code/prompts.js.map +1 -1
  15. package/dist/agents/codemie-code/types.d.ts +3 -0
  16. package/dist/agents/codemie-code/types.d.ts.map +1 -1
  17. package/dist/agents/codemie-code/types.js.map +1 -1
  18. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -1
  19. package/dist/agents/codemie-code/ui/todoPanel.js +4 -0
  20. package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -1
  21. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  22. package/dist/agents/core/AgentCLI.js +3 -1
  23. package/dist/agents/core/AgentCLI.js.map +1 -1
  24. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  25. package/dist/agents/core/BaseAgentAdapter.js +46 -2
  26. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  27. package/dist/agents/core/session/BaseSessionAdapter.d.ts +25 -0
  28. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  29. package/dist/agents/core/session/SessionStore.d.ts +15 -0
  30. package/dist/agents/core/session/SessionStore.d.ts.map +1 -1
  31. package/dist/agents/core/session/SessionStore.js +46 -0
  32. package/dist/agents/core/session/SessionStore.js.map +1 -1
  33. package/dist/agents/core/session/discovery-types.d.ts +53 -0
  34. package/dist/agents/core/session/discovery-types.d.ts.map +1 -0
  35. package/dist/agents/core/session/discovery-types.js +8 -0
  36. package/dist/agents/core/session/discovery-types.js.map +1 -0
  37. package/dist/agents/core/session/types.d.ts +2 -0
  38. package/dist/agents/core/session/types.d.ts.map +1 -1
  39. package/dist/agents/core/types.d.ts +45 -0
  40. package/dist/agents/core/types.d.ts.map +1 -1
  41. package/dist/agents/plugins/claude/claude.plugin.d.ts +44 -1
  42. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  43. package/dist/agents/plugins/claude/claude.plugin.js +214 -0
  44. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  45. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  46. package/dist/agents/plugins/claude/plugin/README.md +40 -2
  47. package/dist/agents/plugins/claude/plugin/claude-templates/README.md +5 -5
  48. package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +177 -436
  49. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +49 -82
  50. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +337 -0
  51. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +129 -419
  52. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +146 -693
  53. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +110 -138
  54. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +197 -0
  55. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +171 -91
  56. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +219 -131
  57. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +223 -98
  58. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +131 -95
  59. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +247 -75
  60. package/dist/agents/plugins/claude/plugin/commands/README.md +133 -0
  61. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +336 -544
  62. package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +232 -503
  63. package/dist/agents/plugins/claude/plugin/commands/memory-add.md +311 -30
  64. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +218 -39
  65. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +11 -0
  66. package/dist/agents/plugins/gemini/extension/gemini-extension.json +1 -1
  67. package/dist/agents/plugins/gemini/extension/hooks/hooks.json +12 -0
  68. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  69. package/dist/agents/plugins/gemini/gemini.plugin.js +2 -4
  70. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  71. package/dist/agents/plugins/opencode/index.d.ts +8 -0
  72. package/dist/agents/plugins/opencode/index.d.ts.map +1 -0
  73. package/dist/agents/plugins/opencode/index.js +12 -0
  74. package/dist/agents/plugins/opencode/index.js.map +1 -0
  75. package/dist/agents/plugins/opencode/opencode-message-types.d.ts +207 -0
  76. package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -0
  77. package/dist/agents/plugins/opencode/opencode-message-types.js +59 -0
  78. package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -0
  79. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +65 -0
  80. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -0
  81. package/dist/agents/plugins/opencode/opencode-model-configs.js +184 -0
  82. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -0
  83. package/dist/agents/plugins/opencode/opencode.paths.d.ts +62 -0
  84. package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -0
  85. package/dist/agents/plugins/opencode/opencode.paths.js +148 -0
  86. package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -0
  87. package/dist/agents/plugins/opencode/opencode.plugin.d.ts +35 -0
  88. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -0
  89. package/dist/agents/plugins/opencode/opencode.plugin.js +338 -0
  90. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -0
  91. package/dist/agents/plugins/opencode/opencode.session.d.ts +77 -0
  92. package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -0
  93. package/dist/agents/plugins/opencode/opencode.session.js +424 -0
  94. package/dist/agents/plugins/opencode/opencode.session.js.map +1 -0
  95. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts +25 -0
  96. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -0
  97. package/dist/agents/plugins/opencode/opencode.storage-utils.js +96 -0
  98. package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -0
  99. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts +30 -0
  100. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -0
  101. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +116 -0
  102. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -0
  103. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +102 -0
  104. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -0
  105. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +584 -0
  106. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -0
  107. package/dist/agents/registry.d.ts.map +1 -1
  108. package/dist/agents/registry.js +2 -0
  109. package/dist/agents/registry.js.map +1 -1
  110. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +5 -0
  111. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
  112. package/dist/cli/commands/doctor/checks/AgentsCheck.js +29 -0
  113. package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
  114. package/dist/cli/commands/hook.d.ts.map +1 -1
  115. package/dist/cli/commands/hook.js +63 -6
  116. package/dist/cli/commands/hook.js.map +1 -1
  117. package/dist/cli/commands/install.d.ts.map +1 -1
  118. package/dist/cli/commands/install.js +86 -7
  119. package/dist/cli/commands/install.js.map +1 -1
  120. package/dist/cli/commands/opencode-metrics.d.ts +13 -0
  121. package/dist/cli/commands/opencode-metrics.d.ts.map +1 -0
  122. package/dist/cli/commands/opencode-metrics.js +200 -0
  123. package/dist/cli/commands/opencode-metrics.js.map +1 -0
  124. package/dist/cli/commands/setup.d.ts.map +1 -1
  125. package/dist/cli/commands/setup.js +113 -0
  126. package/dist/cli/commands/setup.js.map +1 -1
  127. package/dist/cli/commands/skill.d.ts +6 -0
  128. package/dist/cli/commands/skill.d.ts.map +1 -0
  129. package/dist/cli/commands/skill.js +196 -0
  130. package/dist/cli/commands/skill.js.map +1 -0
  131. package/dist/cli/commands/update.d.ts.map +1 -1
  132. package/dist/cli/commands/update.js +34 -6
  133. package/dist/cli/commands/update.js.map +1 -1
  134. package/dist/cli/index.js +4 -0
  135. package/dist/cli/index.js.map +1 -1
  136. package/dist/migrations/003-remove-hooks-node.migration.d.ts +22 -0
  137. package/dist/migrations/003-remove-hooks-node.migration.d.ts.map +1 -0
  138. package/dist/migrations/003-remove-hooks-node.migration.js +103 -0
  139. package/dist/migrations/003-remove-hooks-node.migration.js.map +1 -0
  140. package/dist/migrations/index.d.ts +1 -0
  141. package/dist/migrations/index.d.ts.map +1 -1
  142. package/dist/migrations/index.js +1 -1
  143. package/dist/migrations/index.js.map +1 -1
  144. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +3 -2
  145. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
  146. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +6 -2
  147. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
  148. package/dist/providers/plugins/sso/sso.http-client.js +2 -2
  149. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  150. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  151. package/dist/providers/plugins/sso/sso.setup-steps.js +14 -10
  152. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  153. package/dist/skills/core/SkillDiscovery.d.ts +83 -0
  154. package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
  155. package/dist/skills/core/SkillDiscovery.js +237 -0
  156. package/dist/skills/core/SkillDiscovery.js.map +1 -0
  157. package/dist/skills/core/SkillManager.d.ts +86 -0
  158. package/dist/skills/core/SkillManager.d.ts.map +1 -0
  159. package/dist/skills/core/SkillManager.js +155 -0
  160. package/dist/skills/core/SkillManager.js.map +1 -0
  161. package/dist/skills/core/types.d.ts +120 -0
  162. package/dist/skills/core/types.d.ts.map +1 -0
  163. package/dist/skills/core/types.js +20 -0
  164. package/dist/skills/core/types.js.map +1 -0
  165. package/dist/skills/index.d.ts +12 -0
  166. package/dist/skills/index.d.ts.map +1 -0
  167. package/dist/skills/index.js +12 -0
  168. package/dist/skills/index.js.map +1 -0
  169. package/dist/skills/utils/content-loader.d.ts +25 -0
  170. package/dist/skills/utils/content-loader.d.ts.map +1 -0
  171. package/dist/skills/utils/content-loader.js +161 -0
  172. package/dist/skills/utils/content-loader.js.map +1 -0
  173. package/dist/skills/utils/frontmatter.d.ts +60 -0
  174. package/dist/skills/utils/frontmatter.d.ts.map +1 -0
  175. package/dist/skills/utils/frontmatter.js +114 -0
  176. package/dist/skills/utils/frontmatter.js.map +1 -0
  177. package/dist/skills/utils/pattern-matcher.d.ts +60 -0
  178. package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
  179. package/dist/skills/utils/pattern-matcher.js +97 -0
  180. package/dist/skills/utils/pattern-matcher.js.map +1 -0
  181. package/dist/utils/exec.d.ts.map +1 -1
  182. package/dist/utils/exec.js +11 -1
  183. package/dist/utils/exec.js.map +1 -1
  184. package/dist/utils/installation-detector.d.ts +22 -0
  185. package/dist/utils/installation-detector.d.ts.map +1 -0
  186. package/dist/utils/installation-detector.js +49 -0
  187. package/dist/utils/installation-detector.js.map +1 -0
  188. package/dist/utils/native-installer.d.ts +49 -0
  189. package/dist/utils/native-installer.d.ts.map +1 -0
  190. package/dist/utils/native-installer.js +194 -0
  191. package/dist/utils/native-installer.js.map +1 -0
  192. package/dist/utils/version-utils.d.ts +50 -0
  193. package/dist/utils/version-utils.d.ts.map +1 -0
  194. package/dist/utils/version-utils.js +92 -0
  195. package/dist/utils/version-utils.js.map +1 -0
  196. package/package.json +5 -2
  197. package/scripts/copy-mr-skill-to-global.ts +252 -0
  198. package/scripts/demo-hooks.sh +125 -0
  199. package/scripts/test-hooks.sh +196 -0
  200. package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +0 -205
  201. package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +0 -74
  202. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +0 -143
  203. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +0 -127
@@ -60,7 +60,7 @@ const metadata = {
60
60
  * - Notification → PermissionRequest (Gemini's notification system)
61
61
  *
62
62
  * Unsupported events (silently ignored by router):
63
- * - BeforeAgent, BeforeModel, AfterModel, BeforeToolSelection, BeforeTool, AfterTool
63
+ * - BeforeModel, AfterModel, BeforeToolSelection, BeforeTool, AfterTool
64
64
  */
65
65
  eventNameMapping: {
66
66
  // Direct mappings (same name)
@@ -69,6 +69,7 @@ const metadata = {
69
69
  // Renamed mappings
70
70
  'PreCompress': 'PreCompact', // Gemini's PreCompress = Claude's PreCompact
71
71
  'AfterAgent': 'Stop', // Gemini's AfterAgent = Claude's Stop
72
+ 'BeforeAgent': 'UserPromptSubmit', // Gemini's BeforeAgent = Claude's UserPromptSubmit
72
73
  'Notification': 'PermissionRequest' // Gemini's Notification = Claude's PermissionRequest
73
74
  }
74
75
  }
@@ -101,9 +102,6 @@ export const GeminiPluginMetadata = {
101
102
  },
102
103
  tools: {
103
104
  enableHooks: true
104
- },
105
- hooks: {
106
- enabled: true
107
105
  }
108
106
  });
109
107
  return env;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/gemini/gemini.plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/gemini/gemini.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { OpenCodePlugin, OpenCodePluginMetadata } from './opencode.plugin.js';
2
+ export { OPENCODE_MODEL_CONFIGS, getModelConfig, type OpenCodeModelConfig } from './opencode-model-configs.js';
3
+ export { OpenCodeSessionAdapter } from './opencode.session.js';
4
+ export { getOpenCodeStoragePath, getOpenCodeSessionsPath, getOpenCodeMessagesPath, getOpenCodePartsPath, getSessionStoragePath } from './opencode.paths.js';
5
+ export type { OpenCodeSession, OpenCodeMessage, OpenCodePart, OpenCodeTokens } from './opencode-message-types.js';
6
+ export { isTextPart, isToolPart, isFilePart, isReasoningPart, isStepFinishPart, isAssistantMessage } from './opencode-message-types.js';
7
+ export type { SessionDiscoveryOptions, SessionDescriptor } from '../../core/session/discovery-types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EAEpB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACf,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Phase 1 exports (Core Plugin)
2
+ export { OpenCodePlugin, OpenCodePluginMetadata } from './opencode.plugin.js';
3
+ export { OPENCODE_MODEL_CONFIGS, getModelConfig } from './opencode-model-configs.js';
4
+ // Phase 2 exports (Session Analytics)
5
+ export { OpenCodeSessionAdapter } from './opencode.session.js';
6
+ // FIXED (GPT-5.10/5.11): Export canonical function names, not deprecated alias
7
+ export { getOpenCodeStoragePath, getOpenCodeSessionsPath, getOpenCodeMessagesPath, getOpenCodePartsPath,
8
+ // Deprecated alias for backward compatibility (if external code depends on it)
9
+ getSessionStoragePath } from './opencode.paths.js';
10
+ // Export type guards for external use
11
+ export { isTextPart, isToolPart, isFilePart, isReasoningPart, isStepFinishPart, isAssistantMessage } from './opencode-message-types.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,cAAc,EAEf,MAAM,6BAA6B,CAAC;AAErC,sCAAsC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,+EAA+E;AAC/E,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB;AACpB,+EAA+E;AAC/E,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAQ7B,sCAAsC;AACtC,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * OpenCode Session metadata
3
+ *
4
+ * Source: packages/opencode/src/session/index.ts (Session.Info)
5
+ * Storage path: storage/session/{projectID}/{sessionID}.json
6
+ *
7
+ * VALIDATED against real OpenCode storage (v1.1.36)
8
+ */
9
+ export interface OpenCodeSession {
10
+ id: string;
11
+ title?: string;
12
+ directory: string;
13
+ time: {
14
+ created: number;
15
+ updated: number;
16
+ };
17
+ projectID?: string;
18
+ slug?: string;
19
+ version?: string;
20
+ }
21
+ /**
22
+ * Token tracking structure
23
+ *
24
+ * Source: packages/opencode/src/session/message-v2.ts
25
+ */
26
+ export interface OpenCodeTokens {
27
+ input: number;
28
+ output: number;
29
+ reasoning?: number;
30
+ cache?: {
31
+ read: number;
32
+ write: number;
33
+ };
34
+ }
35
+ /**
36
+ * OpenCode Message (MessageV2 format)
37
+ *
38
+ * Source: packages/opencode/src/session/message-v2.ts
39
+ * Storage path: storage/message/{sessionID}/{messageID}.json
40
+ *
41
+ * Note: This is a discriminated union in OpenCode (MessageV2.Info = User | Assistant)
42
+ */
43
+ export interface OpenCodeMessageBase {
44
+ id: string;
45
+ sessionID: string;
46
+ role: 'user' | 'assistant';
47
+ time: {
48
+ created: number;
49
+ };
50
+ }
51
+ /**
52
+ * User message
53
+ *
54
+ * User messages can have agent context and model selection
55
+ */
56
+ export interface OpenCodeUserMessage extends OpenCodeMessageBase {
57
+ role: 'user';
58
+ agent?: string;
59
+ model?: {
60
+ providerID?: string;
61
+ modelID?: string;
62
+ };
63
+ }
64
+ /**
65
+ * Assistant message with tokens and cost
66
+ */
67
+ export interface OpenCodeAssistantMessage extends OpenCodeMessageBase {
68
+ role: 'assistant';
69
+ providerID?: string;
70
+ modelID?: string;
71
+ path?: string[];
72
+ tokens?: OpenCodeTokens;
73
+ cost?: number;
74
+ agent?: string;
75
+ }
76
+ /**
77
+ * Union type for messages
78
+ */
79
+ export type OpenCodeMessage = OpenCodeUserMessage | OpenCodeAssistantMessage;
80
+ /**
81
+ * Type guard for assistant messages
82
+ */
83
+ export declare function isAssistantMessage(msg: OpenCodeMessage): msg is OpenCodeAssistantMessage;
84
+ /**
85
+ * Base part interface
86
+ *
87
+ * Source: packages/opencode/src/session/message-v2.ts
88
+ * Storage path: storage/part/{messageID}/{partID}.json
89
+ */
90
+ interface OpenCodePartBase {
91
+ id: string;
92
+ messageID: string;
93
+ sessionID: string;
94
+ type: string;
95
+ }
96
+ /**
97
+ * Text part
98
+ */
99
+ export interface OpenCodeTextPart extends OpenCodePartBase {
100
+ type: 'text';
101
+ text: string;
102
+ }
103
+ /**
104
+ * Tool use part
105
+ *
106
+ * CORRECTED: input is inside state, not at top level (validated from real data)
107
+ */
108
+ export interface OpenCodeToolPart extends OpenCodePartBase {
109
+ type: 'tool';
110
+ callID: string;
111
+ tool: string;
112
+ state: {
113
+ status: 'pending' | 'running' | 'completed' | 'error';
114
+ input?: Record<string, unknown>;
115
+ output?: string;
116
+ error?: string;
117
+ title?: string;
118
+ metadata?: Record<string, unknown>;
119
+ time?: {
120
+ start?: number;
121
+ end?: number;
122
+ };
123
+ };
124
+ }
125
+ /**
126
+ * File part
127
+ */
128
+ export interface OpenCodeFilePart extends OpenCodePartBase {
129
+ type: 'file';
130
+ mime: string;
131
+ url?: string;
132
+ source?: 'local' | 'remote';
133
+ filename?: string;
134
+ }
135
+ /**
136
+ * Reasoning part (for o1-style models)
137
+ */
138
+ export interface OpenCodeReasoningPart extends OpenCodePartBase {
139
+ type: 'reasoning';
140
+ text: string;
141
+ }
142
+ /**
143
+ * Step finish part (contains token info and cost)
144
+ *
145
+ * tokens and cost are REQUIRED per OpenCode source
146
+ */
147
+ export interface OpenCodeStepFinishPart extends OpenCodePartBase {
148
+ type: 'step-finish';
149
+ tokens: OpenCodeTokens;
150
+ cost: number;
151
+ reason?: string;
152
+ snapshot?: string;
153
+ }
154
+ /**
155
+ * Patch part (diff/file changes)
156
+ */
157
+ export interface OpenCodePatchPart extends OpenCodePartBase {
158
+ type: 'patch';
159
+ file?: string;
160
+ patch?: string;
161
+ }
162
+ /**
163
+ * Step start part
164
+ */
165
+ export interface OpenCodeStepStartPart extends OpenCodePartBase {
166
+ type: 'step-start';
167
+ }
168
+ /**
169
+ * Discriminated union of all part types
170
+ */
171
+ export type OpenCodePart = OpenCodeTextPart | OpenCodeToolPart | OpenCodeFilePart | OpenCodeReasoningPart | OpenCodeStepFinishPart | OpenCodePatchPart | OpenCodeStepStartPart;
172
+ export declare function isTextPart(part: OpenCodePart): part is OpenCodeTextPart;
173
+ export declare function isToolPart(part: OpenCodePart): part is OpenCodeToolPart;
174
+ export declare function isFilePart(part: OpenCodePart): part is OpenCodeFilePart;
175
+ export declare function isReasoningPart(part: OpenCodePart): part is OpenCodeReasoningPart;
176
+ export declare function isStepFinishPart(part: OpenCodePart): part is OpenCodeStepFinishPart;
177
+ export declare function isPatchPart(part: OpenCodePart): part is OpenCodePatchPart;
178
+ export declare function isStepStartPart(part: OpenCodePart): part is OpenCodeStepStartPart;
179
+ /**
180
+ * OpenCode extends ParsedSession.metadata with these additional fields.
181
+ * Per tech spec ADR-1.
182
+ *
183
+ * Access pattern (within OpenCode plugin boundary only):
184
+ * validateOpenCodeMetadata(session.metadata);
185
+ * const { storagePath, openCodeSessionId } = session.metadata as OpenCodeMetadata;
186
+ */
187
+ export interface OpenCodeMetadata {
188
+ projectPath?: string;
189
+ createdAt?: string;
190
+ updatedAt?: string;
191
+ storagePath: string;
192
+ openCodeSessionId: string;
193
+ openCodeVersion?: string;
194
+ }
195
+ /**
196
+ * Runtime validation for OpenCode metadata extension (per tech spec ADR-1, Review 10 M4).
197
+ * Call before accessing OpenCode-specific fields.
198
+ *
199
+ * @throws Error if metadata is missing required fields
200
+ */
201
+ export declare function validateOpenCodeMetadata(metadata: unknown): asserts metadata is OpenCodeMetadata;
202
+ /**
203
+ * Check if metadata has OpenCode-specific fields (non-throwing version)
204
+ */
205
+ export declare function hasOpenCodeMetadata(metadata: unknown): metadata is OpenCodeMetadata;
206
+ export {};
207
+ //# sourceMappingURL=opencode-message-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-message-types.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode-message-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Type guard for assistant messages
3
+ */
4
+ export function isAssistantMessage(msg) {
5
+ return msg.role === 'assistant';
6
+ }
7
+ // Type guards for safe narrowing
8
+ export function isTextPart(part) {
9
+ return part.type === 'text';
10
+ }
11
+ export function isToolPart(part) {
12
+ return part.type === 'tool';
13
+ }
14
+ export function isFilePart(part) {
15
+ return part.type === 'file';
16
+ }
17
+ export function isReasoningPart(part) {
18
+ return part.type === 'reasoning';
19
+ }
20
+ export function isStepFinishPart(part) {
21
+ return part.type === 'step-finish';
22
+ }
23
+ export function isPatchPart(part) {
24
+ return part.type === 'patch';
25
+ }
26
+ export function isStepStartPart(part) {
27
+ return part.type === 'step-start';
28
+ }
29
+ /**
30
+ * Runtime validation for OpenCode metadata extension (per tech spec ADR-1, Review 10 M4).
31
+ * Call before accessing OpenCode-specific fields.
32
+ *
33
+ * @throws Error if metadata is missing required fields
34
+ */
35
+ export function validateOpenCodeMetadata(metadata) {
36
+ if (!metadata || typeof metadata !== 'object') {
37
+ throw new Error('Metadata must be an object');
38
+ }
39
+ const m = metadata;
40
+ if (!m.storagePath || typeof m.storagePath !== 'string') {
41
+ throw new Error('Missing or invalid storagePath in metadata');
42
+ }
43
+ if (!m.openCodeSessionId || typeof m.openCodeSessionId !== 'string') {
44
+ throw new Error('Missing or invalid openCodeSessionId in metadata');
45
+ }
46
+ }
47
+ /**
48
+ * Check if metadata has OpenCode-specific fields (non-throwing version)
49
+ */
50
+ export function hasOpenCodeMetadata(metadata) {
51
+ if (!metadata || typeof metadata !== 'object')
52
+ return false;
53
+ const m = metadata;
54
+ return (typeof m.storagePath === 'string' &&
55
+ m.storagePath.length > 0 &&
56
+ typeof m.openCodeSessionId === 'string' &&
57
+ m.openCodeSessionId.length > 0);
58
+ }
59
+ //# sourceMappingURL=opencode-message-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-message-types.js","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode-message-types.ts"],"names":[],"mappings":"AA8FA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAoB;IACrD,OAAO,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC;AAClC,CAAC;AA0GD,iCAAiC;AACjC,MAAM,UAAU,UAAU,CAAC,IAAkB;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAkB;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAkB;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AACpC,CAAC;AAmBD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAiB;IAEjB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,CAAC,GAAG,QAAmC,CAAC;IAC9C,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,iBAAiB,IAAI,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,CAAC,GAAG,QAAmC,CAAC;IAC9C,OAAO,CACL,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ;QACvC,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Model configuration for OpenCode agent
3
+ * Uses OpenCode's native format for direct injection
4
+ */
5
+ export interface OpenCodeModelConfig {
6
+ /** Model identifier (OpenCode format: id) */
7
+ id: string;
8
+ /** Model name (OpenCode format: name) */
9
+ name: string;
10
+ /** Display name for UI (CodeMie extension) */
11
+ displayName?: string;
12
+ /** Model family (e.g., "gpt-5", "claude-4") */
13
+ family: string;
14
+ /** Tool calling support (OpenCode format: tool_call) */
15
+ tool_call: boolean;
16
+ /** Reasoning capability (OpenCode format: reasoning) */
17
+ reasoning: boolean;
18
+ /** Attachment support */
19
+ attachment: boolean;
20
+ /** Temperature control availability */
21
+ temperature: boolean;
22
+ /** Structured output support (OpenCode format: structured_output) */
23
+ structured_output?: boolean;
24
+ /** Modality support */
25
+ modalities: {
26
+ input: string[];
27
+ output: string[];
28
+ };
29
+ /** Knowledge cutoff date (YYYY-MM-DD) */
30
+ knowledge: string;
31
+ /** Release date (YYYY-MM-DD) */
32
+ release_date: string;
33
+ /** Last updated date (YYYY-MM-DD) */
34
+ last_updated: string;
35
+ /** Whether model has open weights */
36
+ open_weights: boolean;
37
+ /** Pricing information (USD per million tokens) */
38
+ cost: {
39
+ input: number;
40
+ output: number;
41
+ cache_read?: number;
42
+ };
43
+ /** Model limits */
44
+ limit: {
45
+ context: number;
46
+ output: number;
47
+ };
48
+ /** Provider-specific options (CodeMie extension) */
49
+ providerOptions?: {
50
+ headers?: Record<string, string>;
51
+ timeout?: number;
52
+ };
53
+ }
54
+ export declare const OPENCODE_MODEL_CONFIGS: Record<string, OpenCodeModelConfig>;
55
+ /**
56
+ * Get model configuration with fallback for unknown models
57
+ *
58
+ * @param modelId - Model identifier (e.g., 'gpt-5-2-2025-12-11')
59
+ * @returns Model configuration in OpenCode format
60
+ *
61
+ * Note: The returned config is used directly in OPENCODE_CONFIG_CONTENT
62
+ * defaults.model = "<provider>/<modelId>" (e.g., "codemie-proxy/gpt-5-2-2025-12-11")
63
+ */
64
+ export declare function getModelConfig(modelId: string): OpenCodeModelConfig;
65
+ //# sourceMappingURL=opencode-model-configs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-model-configs.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode-model-configs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;IACnB,yBAAyB;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB;IACvB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,mBAAmB;IACnB,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,oDAAoD;IACpD,eAAe,CAAC,EAAE;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA0ItE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAoCnE"}
@@ -0,0 +1,184 @@
1
+ export const OPENCODE_MODEL_CONFIGS = {
2
+ 'gpt-5-2-2025-12-11': {
3
+ id: 'gpt-5-2-2025-12-11',
4
+ name: 'gpt-5-2-2025-12-11',
5
+ displayName: 'GPT-5.2 (Dec 2025)',
6
+ family: 'gpt-5',
7
+ tool_call: true,
8
+ reasoning: true,
9
+ attachment: true,
10
+ temperature: false,
11
+ modalities: {
12
+ input: ['text', 'image'],
13
+ output: ['text']
14
+ },
15
+ knowledge: '2025-08-31',
16
+ release_date: '2025-12-11',
17
+ last_updated: '2025-12-11',
18
+ open_weights: false,
19
+ cost: {
20
+ input: 1.75,
21
+ output: 14,
22
+ cache_read: 0.125
23
+ },
24
+ limit: {
25
+ context: 400000,
26
+ output: 128000
27
+ }
28
+ },
29
+ 'gpt-5.1-codex': {
30
+ id: 'gpt-5.1-codex',
31
+ name: 'GPT-5.1 Codex',
32
+ displayName: 'GPT-5.1 Codex',
33
+ family: 'gpt-5-codex',
34
+ tool_call: true,
35
+ reasoning: true,
36
+ attachment: false,
37
+ temperature: false,
38
+ modalities: {
39
+ input: ['text', 'image', 'audio'],
40
+ output: ['text', 'image', 'audio']
41
+ },
42
+ knowledge: '2024-09-30',
43
+ release_date: '2025-11-14',
44
+ last_updated: '2025-11-14',
45
+ open_weights: false,
46
+ cost: {
47
+ input: 1.25,
48
+ output: 10,
49
+ cache_read: 0.125
50
+ },
51
+ limit: {
52
+ context: 400000,
53
+ output: 128000
54
+ }
55
+ },
56
+ 'gpt-5.1-codex-mini': {
57
+ id: 'gpt-5.1-codex-mini',
58
+ name: 'GPT-5.1 Codex Mini',
59
+ displayName: 'GPT-5.1 Codex Mini',
60
+ family: 'gpt-5-codex-mini',
61
+ tool_call: true,
62
+ reasoning: true,
63
+ attachment: false,
64
+ temperature: false,
65
+ modalities: {
66
+ input: ['text', 'image'],
67
+ output: ['text']
68
+ },
69
+ knowledge: '2024-09-30',
70
+ release_date: '2025-11-14',
71
+ last_updated: '2025-11-14',
72
+ open_weights: false,
73
+ cost: {
74
+ input: 0.25,
75
+ output: 2,
76
+ cache_read: 0.025
77
+ },
78
+ limit: {
79
+ context: 400000,
80
+ output: 128000
81
+ }
82
+ },
83
+ 'gpt-5.1-codex-max': {
84
+ id: 'gpt-5.1-codex-max',
85
+ name: 'GPT-5.1 Codex Max',
86
+ displayName: 'GPT-5.1 Codex Max',
87
+ family: 'gpt-5-codex-max',
88
+ tool_call: true,
89
+ reasoning: true,
90
+ attachment: true,
91
+ structured_output: true,
92
+ temperature: false,
93
+ modalities: {
94
+ input: ['text', 'image'],
95
+ output: ['text']
96
+ },
97
+ knowledge: '2024-09-30',
98
+ release_date: '2025-11-13',
99
+ last_updated: '2025-11-13',
100
+ open_weights: false,
101
+ cost: {
102
+ input: 1.25,
103
+ output: 10,
104
+ cache_read: 0.125
105
+ },
106
+ limit: {
107
+ context: 400000,
108
+ output: 128000
109
+ }
110
+ },
111
+ 'gpt-5.2-chat': {
112
+ id: 'gpt-5.2-chat',
113
+ name: 'GPT-5.2 Chat',
114
+ displayName: 'GPT-5.2 Chat',
115
+ family: 'gpt-5-chat',
116
+ tool_call: true,
117
+ reasoning: true,
118
+ attachment: true,
119
+ structured_output: true,
120
+ temperature: false,
121
+ modalities: {
122
+ input: ['text', 'image'],
123
+ output: ['text']
124
+ },
125
+ knowledge: '2025-08-31',
126
+ release_date: '2025-12-11',
127
+ last_updated: '2025-12-11',
128
+ open_weights: false,
129
+ cost: {
130
+ input: 1.75,
131
+ output: 14,
132
+ cache_read: 0.175
133
+ },
134
+ limit: {
135
+ context: 128000,
136
+ output: 16384
137
+ }
138
+ }
139
+ };
140
+ /**
141
+ * Get model configuration with fallback for unknown models
142
+ *
143
+ * @param modelId - Model identifier (e.g., 'gpt-5-2-2025-12-11')
144
+ * @returns Model configuration in OpenCode format
145
+ *
146
+ * Note: The returned config is used directly in OPENCODE_CONFIG_CONTENT
147
+ * defaults.model = "<provider>/<modelId>" (e.g., "codemie-proxy/gpt-5-2-2025-12-11")
148
+ */
149
+ export function getModelConfig(modelId) {
150
+ const config = OPENCODE_MODEL_CONFIGS[modelId];
151
+ if (config) {
152
+ return config;
153
+ }
154
+ // Fallback for unknown models - create minimal OpenCode-compatible config
155
+ // Extract family from model ID (e.g., "gpt-4o" -> "gpt-4")
156
+ const family = modelId.split('-').slice(0, 2).join('-') || modelId;
157
+ return {
158
+ id: modelId,
159
+ name: modelId,
160
+ displayName: modelId,
161
+ family,
162
+ tool_call: true, // Assume tool support
163
+ reasoning: false, // Conservative default
164
+ attachment: false,
165
+ temperature: true,
166
+ modalities: {
167
+ input: ['text'],
168
+ output: ['text']
169
+ },
170
+ knowledge: new Date().toISOString().split('T')[0], // Use current date
171
+ release_date: new Date().toISOString().split('T')[0],
172
+ last_updated: new Date().toISOString().split('T')[0],
173
+ open_weights: false,
174
+ cost: {
175
+ input: 0,
176
+ output: 0
177
+ },
178
+ limit: {
179
+ context: 128000,
180
+ output: 4096
181
+ }
182
+ };
183
+ }
184
+ //# sourceMappingURL=opencode-model-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-model-configs.js","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode-model-configs.ts"],"names":[],"mappings":"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"}