@codemieai/code 0.0.33 → 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 (180) 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/core/AgentCLI.d.ts.map +1 -1
  19. package/dist/agents/core/AgentCLI.js +3 -1
  20. package/dist/agents/core/AgentCLI.js.map +1 -1
  21. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  22. package/dist/agents/core/BaseAgentAdapter.js +33 -0
  23. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  24. package/dist/agents/core/session/BaseSessionAdapter.d.ts +25 -0
  25. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  26. package/dist/agents/core/session/discovery-types.d.ts +53 -0
  27. package/dist/agents/core/session/discovery-types.d.ts.map +1 -0
  28. package/dist/agents/core/session/discovery-types.js +8 -0
  29. package/dist/agents/core/session/discovery-types.js.map +1 -0
  30. package/dist/agents/core/types.d.ts +45 -0
  31. package/dist/agents/core/types.d.ts.map +1 -1
  32. package/dist/agents/plugins/claude/claude.plugin.d.ts +44 -1
  33. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  34. package/dist/agents/plugins/claude/claude.plugin.js +214 -0
  35. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  36. package/dist/agents/plugins/claude/plugin/README.md +40 -2
  37. package/dist/agents/plugins/claude/plugin/claude-templates/README.md +5 -5
  38. package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +177 -436
  39. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +49 -82
  40. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +337 -0
  41. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +129 -419
  42. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +146 -693
  43. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +110 -138
  44. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +197 -0
  45. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +171 -91
  46. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +219 -131
  47. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +223 -98
  48. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +131 -95
  49. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +247 -75
  50. package/dist/agents/plugins/claude/plugin/commands/README.md +133 -0
  51. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +336 -544
  52. package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +232 -503
  53. package/dist/agents/plugins/claude/plugin/commands/memory-add.md +311 -30
  54. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +218 -39
  55. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  56. package/dist/agents/plugins/gemini/gemini.plugin.js +0 -3
  57. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  58. package/dist/agents/plugins/opencode/index.d.ts +8 -0
  59. package/dist/agents/plugins/opencode/index.d.ts.map +1 -0
  60. package/dist/agents/plugins/opencode/index.js +12 -0
  61. package/dist/agents/plugins/opencode/index.js.map +1 -0
  62. package/dist/agents/plugins/opencode/opencode-message-types.d.ts +207 -0
  63. package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -0
  64. package/dist/agents/plugins/opencode/opencode-message-types.js +59 -0
  65. package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -0
  66. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +65 -0
  67. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -0
  68. package/dist/agents/plugins/opencode/opencode-model-configs.js +184 -0
  69. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -0
  70. package/dist/agents/plugins/opencode/opencode.paths.d.ts +62 -0
  71. package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -0
  72. package/dist/agents/plugins/opencode/opencode.paths.js +148 -0
  73. package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -0
  74. package/dist/agents/plugins/opencode/opencode.plugin.d.ts +35 -0
  75. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -0
  76. package/dist/agents/plugins/opencode/opencode.plugin.js +338 -0
  77. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -0
  78. package/dist/agents/plugins/opencode/opencode.session.d.ts +77 -0
  79. package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -0
  80. package/dist/agents/plugins/opencode/opencode.session.js +424 -0
  81. package/dist/agents/plugins/opencode/opencode.session.js.map +1 -0
  82. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts +25 -0
  83. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -0
  84. package/dist/agents/plugins/opencode/opencode.storage-utils.js +96 -0
  85. package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -0
  86. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts +30 -0
  87. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -0
  88. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +116 -0
  89. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -0
  90. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +102 -0
  91. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -0
  92. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +584 -0
  93. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -0
  94. package/dist/agents/registry.d.ts.map +1 -1
  95. package/dist/agents/registry.js +2 -0
  96. package/dist/agents/registry.js.map +1 -1
  97. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +5 -0
  98. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
  99. package/dist/cli/commands/doctor/checks/AgentsCheck.js +29 -0
  100. package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
  101. package/dist/cli/commands/install.d.ts.map +1 -1
  102. package/dist/cli/commands/install.js +86 -7
  103. package/dist/cli/commands/install.js.map +1 -1
  104. package/dist/cli/commands/opencode-metrics.d.ts +13 -0
  105. package/dist/cli/commands/opencode-metrics.d.ts.map +1 -0
  106. package/dist/cli/commands/opencode-metrics.js +200 -0
  107. package/dist/cli/commands/opencode-metrics.js.map +1 -0
  108. package/dist/cli/commands/setup.d.ts.map +1 -1
  109. package/dist/cli/commands/setup.js +113 -0
  110. package/dist/cli/commands/setup.js.map +1 -1
  111. package/dist/cli/commands/skill.d.ts +6 -0
  112. package/dist/cli/commands/skill.d.ts.map +1 -0
  113. package/dist/cli/commands/skill.js +196 -0
  114. package/dist/cli/commands/skill.js.map +1 -0
  115. package/dist/cli/commands/update.d.ts.map +1 -1
  116. package/dist/cli/commands/update.js +34 -6
  117. package/dist/cli/commands/update.js.map +1 -1
  118. package/dist/cli/index.js +4 -0
  119. package/dist/cli/index.js.map +1 -1
  120. package/dist/migrations/003-remove-hooks-node.migration.d.ts +22 -0
  121. package/dist/migrations/003-remove-hooks-node.migration.d.ts.map +1 -0
  122. package/dist/migrations/003-remove-hooks-node.migration.js +103 -0
  123. package/dist/migrations/003-remove-hooks-node.migration.js.map +1 -0
  124. package/dist/migrations/index.d.ts +1 -0
  125. package/dist/migrations/index.d.ts.map +1 -1
  126. package/dist/migrations/index.js +1 -1
  127. package/dist/migrations/index.js.map +1 -1
  128. package/dist/providers/plugins/sso/sso.http-client.js +2 -2
  129. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  130. package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
  131. package/dist/providers/plugins/sso/sso.setup-steps.js +14 -10
  132. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  133. package/dist/skills/core/SkillDiscovery.d.ts +83 -0
  134. package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
  135. package/dist/skills/core/SkillDiscovery.js +237 -0
  136. package/dist/skills/core/SkillDiscovery.js.map +1 -0
  137. package/dist/skills/core/SkillManager.d.ts +86 -0
  138. package/dist/skills/core/SkillManager.d.ts.map +1 -0
  139. package/dist/skills/core/SkillManager.js +155 -0
  140. package/dist/skills/core/SkillManager.js.map +1 -0
  141. package/dist/skills/core/types.d.ts +120 -0
  142. package/dist/skills/core/types.d.ts.map +1 -0
  143. package/dist/skills/core/types.js +20 -0
  144. package/dist/skills/core/types.js.map +1 -0
  145. package/dist/skills/index.d.ts +12 -0
  146. package/dist/skills/index.d.ts.map +1 -0
  147. package/dist/skills/index.js +12 -0
  148. package/dist/skills/index.js.map +1 -0
  149. package/dist/skills/utils/content-loader.d.ts +25 -0
  150. package/dist/skills/utils/content-loader.d.ts.map +1 -0
  151. package/dist/skills/utils/content-loader.js +161 -0
  152. package/dist/skills/utils/content-loader.js.map +1 -0
  153. package/dist/skills/utils/frontmatter.d.ts +60 -0
  154. package/dist/skills/utils/frontmatter.d.ts.map +1 -0
  155. package/dist/skills/utils/frontmatter.js +114 -0
  156. package/dist/skills/utils/frontmatter.js.map +1 -0
  157. package/dist/skills/utils/pattern-matcher.d.ts +60 -0
  158. package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
  159. package/dist/skills/utils/pattern-matcher.js +97 -0
  160. package/dist/skills/utils/pattern-matcher.js.map +1 -0
  161. package/dist/utils/installation-detector.d.ts +22 -0
  162. package/dist/utils/installation-detector.d.ts.map +1 -0
  163. package/dist/utils/installation-detector.js +49 -0
  164. package/dist/utils/installation-detector.js.map +1 -0
  165. package/dist/utils/native-installer.d.ts +49 -0
  166. package/dist/utils/native-installer.d.ts.map +1 -0
  167. package/dist/utils/native-installer.js +194 -0
  168. package/dist/utils/native-installer.js.map +1 -0
  169. package/dist/utils/version-utils.d.ts +50 -0
  170. package/dist/utils/version-utils.d.ts.map +1 -0
  171. package/dist/utils/version-utils.js +92 -0
  172. package/dist/utils/version-utils.js.map +1 -0
  173. package/package.json +5 -2
  174. package/scripts/copy-mr-skill-to-global.ts +252 -0
  175. package/scripts/demo-hooks.sh +125 -0
  176. package/scripts/test-hooks.sh +196 -0
  177. package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +0 -205
  178. package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +0 -74
  179. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +0 -143
  180. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +0 -127
@@ -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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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Storage layout detection result
3
+ * Per tech spec ADR-2
4
+ */
5
+ export interface StorageLayoutResult {
6
+ layout: 'post-migration' | 'legacy' | 'mixed' | 'unknown';
7
+ migrationVersion: number;
8
+ postMigrationPath?: string;
9
+ legacyPaths?: string[];
10
+ }
11
+ /**
12
+ * Detect OpenCode storage layout (post-migration vs legacy)
13
+ *
14
+ * Per tech spec ADR-2:
15
+ * - Post-migration: storage/session/, storage/message/, storage/part/
16
+ * - Legacy: project/{projectDir}/storage/session/info/
17
+ * - Migration file: plain text numeric version (not JSON)
18
+ */
19
+ export declare function detectStorageLayout(storagePath: string): Promise<StorageLayoutResult>;
20
+ /**
21
+ * Get OpenCode storage root path based on platform
22
+ *
23
+ * OpenCode uses XDG conventions for data storage:
24
+ * - Linux/WSL: ~/.local/share/opencode/storage/
25
+ * - macOS: ~/Library/Application Support/opencode/storage/
26
+ * - Windows: %LOCALAPPDATA%/opencode/storage/
27
+ *
28
+ * @returns Path to storage root directory or null if not found
29
+ */
30
+ export declare function getOpenCodeStoragePath(): string | null;
31
+ /**
32
+ * Get OpenCode sessions directory path
33
+ * Sessions are stored at: storage/session/{projectID}/{sessionID}.json
34
+ *
35
+ * @returns Path to sessions directory or null if storage not found
36
+ */
37
+ export declare function getOpenCodeSessionsPath(): string | null;
38
+ /**
39
+ * Get OpenCode messages directory path
40
+ * Messages are stored at: storage/message/{sessionID}/{messageID}.json
41
+ *
42
+ * @returns Path to messages directory or null if storage not found
43
+ */
44
+ export declare function getOpenCodeMessagesPath(): string | null;
45
+ /**
46
+ * Get OpenCode parts directory path
47
+ * Parts are stored at: storage/part/{messageID}/{partID}.json
48
+ *
49
+ * @returns Path to parts directory or null if storage not found
50
+ */
51
+ export declare function getOpenCodePartsPath(): string | null;
52
+ /**
53
+ * Get OpenCode home directory (~/.opencode)
54
+ */
55
+ export declare function getOpenCodeHome(): string;
56
+ /**
57
+ * Get OpenCode config directory
58
+ */
59
+ export declare function getOpenCodeConfigDir(): string;
60
+ /** @deprecated Use getOpenCodeStoragePath() instead */
61
+ export declare const getSessionStoragePath: typeof getOpenCodeStoragePath;
62
+ //# sourceMappingURL=opencode.paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.paths.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/opencode/opencode.paths.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyC3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CA8BtD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAKvD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAKvD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAKpD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAK7C;AAGD,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,+BAAyB,CAAC"}