@yoloship/ai 0.2.0-beta.0 → 0.2.0-beta.2
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.
- package/dist/index.mjs +147 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1 +1,147 @@
|
|
|
1
|
-
const _0x5e0e75=_0x3af4;(function(_0x25ec91,_0x5d6529){const _0x18e716=_0x3af4,_0x1051f8=_0x25ec91();while(!![]){try{const _0x307872=parseInt(_0x18e716(0x156,'$ja&'))/0x1*(-parseInt(_0x18e716(0x117,'#JrT'))/0x2)+parseInt(_0x18e716(0x140,'7!7i'))/0x3+parseInt(_0x18e716(0x130,'698j'))/0x4+parseInt(_0x18e716(0x15a,'VYMp'))/0x5*(-parseInt(_0x18e716(0x163,'x]8e'))/0x6)+-parseInt(_0x18e716(0x129,'EP1V'))/0x7+-parseInt(_0x18e716(0x116,'ej#J'))/0x8+parseInt(_0x18e716(0x11b,'(!!h'))/0x9;if(_0x307872===_0x5d6529)break;else _0x1051f8['push'](_0x1051f8['shift']());}catch(_0x203934){_0x1051f8['push'](_0x1051f8['shift']());}}}(_0x4984,0xf36e2));import{ensureClaude,spawnClaude,spawnClaudeBidirectional}from'@yoloship/claude-sdk';export{EventStream,classifyEvent,extractFileChange,isErrorEvent,isFileChangedEvent,isOutputEvent,isResultEvent,isThinkingEvent,isToolResultEvent,isToolUseEvent,normalizeEvent}from'@yoloship/claude-sdk';const CI_DEFAULTS={'dangerouslySkipPermissions':!![],'attribution':{'commit':'','pr':''},'autoMemoryEnabled':![]},CI_PAGER_ENV={'GIT_PAGER':'cat','GH_PAGER':_0x5e0e75(0x143,'@pLu'),'PAGER':_0x5e0e75(0x160,'Fg@r')};function toClaudeAuth(_0x17be82){const _0x9d75ae=_0x5e0e75;if(!_0x17be82)return void 0x0;return{'apiKey':_0x17be82[_0x9d75ae(0x12c,'Qc!6')]};}class ClaudeRuntime{['id']=_0x5e0e75(0x168,'Qc!6');#ci;constructor(_0x2cb729={}){this.#ci=_0x2cb729['ci']??![];}async[_0x5e0e75(0x145,'VYMp')](_0x43faad){await ensureClaude(_0x43faad);}[_0x5e0e75(0x128,'5oM&')](_0x48badf){const _0x4e5b7d=_0x5e0e75,_0x2971df=this.#ci?{...CI_DEFAULTS,...this.#toClaudeOptions(_0x48badf)}:this.#toClaudeOptions(_0x48badf),_0x12fb1c=spawnClaude(_0x2971df,toClaudeAuth(_0x48badf[_0x4e5b7d(0x165,'1u$a')]));return _0x48badf[_0x4e5b7d(0x12a,'(1^b')]&&_0x12fb1c[_0x4e5b7d(0x15f,'x]8e')]['on'](_0x48badf[_0x4e5b7d(0x159,'Fg@r')]),_0x12fb1c[_0x4e5b7d(0x115,'(!!h')];}[_0x5e0e75(0x13a,'$ja&')](_0x1cef0a){const _0x46216d=_0x5e0e75,_0x34613a={'zRQko':function(_0x2c07fb,_0x183a28){return _0x2c07fb(_0x183a28);}},_0x379af3=this.#ci?{...CI_DEFAULTS,...this.#toClaudeSessionOptions(_0x1cef0a)}:this.#toClaudeSessionOptions(_0x1cef0a),_0x406112=spawnClaudeBidirectional(_0x379af3,_0x34613a[_0x46216d(0x15c,'6JgT')](toClaudeAuth,_0x1cef0a[_0x46216d(0x13e,'Nr60')]));return _0x1cef0a['onEvent']&&_0x406112['events']['on'](_0x1cef0a[_0x46216d(0x132,'VYMp')]),{'events':_0x406112[_0x46216d(0x123,'@acF')],'sendTurn':_0x9b7fe1=>_0x406112[_0x46216d(0x11c,'vkbR')](_0x9b7fe1),'cancel':()=>{const _0x34cd4a=_0x46216d;try{_0x406112[_0x34cd4a(0x124,'f&W1')]['kill']();}catch{}},'close':()=>_0x406112['close'](),'result':_0x406112[_0x46216d(0x12f,'**N6')]};}[_0x5e0e75(0x161,'(!!h')](_0x29f716){return{'mcpServers':_0x29f716};}['translateAllowedTools'](_0xecfdae){return _0xecfdae;}#toClaudeSessionOptions(_0x54a6c1){const _0x43f283=_0x5e0e75,_0x4e35d3={'kjCRJ':function(_0x31b017,_0x3d0c04){return _0x31b017!==_0x3d0c04;},'ZBKiI':function(_0x3e97bf,_0x5e7faa){return _0x3e97bf!==_0x5e7faa;},'TrWkP':_0x43f283(0x14a,'2hkE'),'AqPUQ':_0x43f283(0x150,'Fg@r')},_0x51eb24={};_0x4e35d3[_0x43f283(0x122,'l1no')](_0x54a6c1[_0x43f283(0x119,'%Fhr')],void 0x0)&&(_0x51eb24[_0x43f283(0x141,'698j')]=_0x54a6c1[_0x43f283(0x16a,'@acF')]);_0x4e35d3[_0x43f283(0x137,'5NRn')](_0x54a6c1[_0x43f283(0x14e,'vkbR')],void 0x0)&&(_0x51eb24[_0x43f283(0x15b,'dC0P')]=_0x54a6c1[_0x43f283(0x148,'Fg@r')]);_0x54a6c1[_0x43f283(0x158,'$ja&')]!==void 0x0&&(_0x51eb24[_0x43f283(0x162,'4FXU')]=_0x54a6c1['maxTurns']);_0x54a6c1[_0x43f283(0x166,'1u$a')]!==void 0x0&&(_0x51eb24[_0x43f283(0x16b,'xaOE')]=this[_0x43f283(0x139,'VLo@')](_0x54a6c1[_0x43f283(0x14c,'520z')]));_0x4e35d3[_0x43f283(0x144,'Z5of')](_0x54a6c1[_0x43f283(0x13d,'vkbR')],void 0x0)&&(_0x51eb24[_0x43f283(0x11f,'AMG2')]=this[_0x43f283(0x118,'dC0P')](_0x54a6c1['mcpServers'])[_0x43f283(0x169,'[%Ts')]);_0x4e35d3[_0x43f283(0x146,'6mWK')](_0x54a6c1['cwd'],void 0x0)&&(_0x51eb24[_0x43f283(0x13f,'%i#a')]=_0x54a6c1[_0x43f283(0x15e,'@pLu')]);if(this.#ci)_0x51eb24[_0x43f283(0x131,'4FXU')]={...CI_PAGER_ENV,..._0x54a6c1[_0x43f283(0x164,'ej#J')]??{}};else _0x54a6c1[_0x43f283(0x13b,'#JrT')]!==void 0x0&&(_0x51eb24['env']=_0x54a6c1[_0x43f283(0x157,'7!7i')]);return _0x54a6c1[_0x43f283(0x16d,'c0]s')]!==void 0x0&&(_0x51eb24[_0x43f283(0x126,'s1wv')]=_0x54a6c1[_0x43f283(0x138,'o1G6')]),_0x4e35d3[_0x43f283(0x151,'iJt(')](_0x54a6c1[_0x43f283(0x11a,'ej#J')],void 0x0)&&(_0x51eb24[_0x43f283(0x152,'a2%t')]=_0x54a6c1['resume']),_0x54a6c1[_0x43f283(0x12d,'wW9%')]!==void 0x0&&(_0x51eb24[_0x43f283(0x14f,'Qc!6')]=_0x54a6c1[_0x43f283(0x125,'0EA(')]),_0x51eb24[_0x43f283(0x120,'o1G6')]=[_0x4e35d3[_0x43f283(0x136,'7*Nd')],_0x4e35d3['AqPUQ']],_0x51eb24;}#toClaudeOptions(_0x3298f0){const _0x2d9c39=_0x5e0e75;return{'prompt':_0x3298f0[_0x2d9c39(0x15d,'f&W1')],...this.#toClaudeSessionOptions(_0x3298f0)};}}function _0x3af4(_0x2cfb41,_0x43d9ef){_0x2cfb41=_0x2cfb41-0x115;const _0x49847f=_0x4984();let _0x3af4db=_0x49847f[_0x2cfb41];if(_0x3af4['BoEUMt']===undefined){var _0x2c1b25=function(_0x58f2fd){const _0x5c79b8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5418db='',_0x143f50='';for(let _0x523cbd=0x0,_0x1964cf,_0x4999ed,_0x40249e=0x0;_0x4999ed=_0x58f2fd['charAt'](_0x40249e++);~_0x4999ed&&(_0x1964cf=_0x523cbd%0x4?_0x1964cf*0x40+_0x4999ed:_0x4999ed,_0x523cbd++%0x4)?_0x5418db+=String['fromCharCode'](0xff&_0x1964cf>>(-0x2*_0x523cbd&0x6)):0x0){_0x4999ed=_0x5c79b8['indexOf'](_0x4999ed);}for(let _0x191d94=0x0,_0x3722df=_0x5418db['length'];_0x191d94<_0x3722df;_0x191d94++){_0x143f50+='%'+('00'+_0x5418db['charCodeAt'](_0x191d94)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x143f50);};const _0x3b54d9=function(_0x3e5863,_0x3af774){let _0x52061c=[],_0x1549cc=0x0,_0x1dab9b,_0x5a557f='';_0x3e5863=_0x2c1b25(_0x3e5863);let _0x7490a9;for(_0x7490a9=0x0;_0x7490a9<0x100;_0x7490a9++){_0x52061c[_0x7490a9]=_0x7490a9;}for(_0x7490a9=0x0;_0x7490a9<0x100;_0x7490a9++){_0x1549cc=(_0x1549cc+_0x52061c[_0x7490a9]+_0x3af774['charCodeAt'](_0x7490a9%_0x3af774['length']))%0x100,_0x1dab9b=_0x52061c[_0x7490a9],_0x52061c[_0x7490a9]=_0x52061c[_0x1549cc],_0x52061c[_0x1549cc]=_0x1dab9b;}_0x7490a9=0x0,_0x1549cc=0x0;for(let _0x1ca95b=0x0;_0x1ca95b<_0x3e5863['length'];_0x1ca95b++){_0x7490a9=(_0x7490a9+0x1)%0x100,_0x1549cc=(_0x1549cc+_0x52061c[_0x7490a9])%0x100,_0x1dab9b=_0x52061c[_0x7490a9],_0x52061c[_0x7490a9]=_0x52061c[_0x1549cc],_0x52061c[_0x1549cc]=_0x1dab9b,_0x5a557f+=String['fromCharCode'](_0x3e5863['charCodeAt'](_0x1ca95b)^_0x52061c[(_0x52061c[_0x7490a9]+_0x52061c[_0x1549cc])%0x100]);}return _0x5a557f;};_0x3af4['RckUIr']=_0x3b54d9,_0x3af4['PJOVFV']={},_0x3af4['BoEUMt']=!![];}const _0x330cd8=_0x49847f[0x0],_0x1c24d0=_0x2cfb41+_0x330cd8,_0x14fd16=_0x3af4['PJOVFV'][_0x1c24d0];return!_0x14fd16?(_0x3af4['IeiyGm']===undefined&&(_0x3af4['IeiyGm']=!![]),_0x3af4db=_0x3af4['RckUIr'](_0x3af4db,_0x43d9ef),_0x3af4['PJOVFV'][_0x1c24d0]=_0x3af4db):_0x3af4db=_0x14fd16,_0x3af4db;}function _0x4984(){const _0xecd3c7=['WQdcGCkaW7pcPCo2vwS','W4KWmH3cJh7cGCkAsq','WRz+W6RcP8kRW6vPoHW5cva','F35V','wmk4aMnbl8obW7uYeMrTfq','wstdQ8omtCoJWOm','WRRdTd1eWQhcM8oyWPf6WO4SAmkHcaHvfW','WQ1/WPWKWPmS','agrCW6JcOK9KkW','E8o1AqPZW5FdQ1ddK0OlWRdcRKpdVdlcPW','mWTcqwdcIG','WP03oJhdLSoXW70IlL5TW4DL','WOZdGCko','eSouWOFdVJaqkG','WONcK8kytJJdQMPwgSopWRRdPSoEW6S','W5VdGv3dMeDAWRxdTY1LW4TCWQ9x','WRtdNZzqWQCEsSkzaxxcKfVdI8ofBY1vWOvilmkphrjKWO0PW7ntcSo2ASknWPrEA0pcNIdcNSoT4OcZEmk4W6ZdGbJcKmoFD8o/WPLaWPO','W5m+WOtdUSom','FcddHSoeWR8','W6aLqLTSW7xdHHL0','d2vlWQSXWRxcUmkVnbfcfuugW63dKmoIW5fUssG','dKhcU8kzWOxdGCo1ASo+W6hcTSo4WOylW4qT','x8k0W7O','adldJmo/rCovWPy','gIddHYe5lSk5ymkXEW','emoEWODZ','WQfMWR4','W7FdO2ddS8oIWO1xWOxcUmkPtmkSFG','W5X9CxhcHCkUWPKvc2DvW4q','WPXRnquGWO3dGmkiW4D7c8oPga','WRFdS8kY','W5FdQmolxCoU','gmouWRhdVsCB','W4OrW5vvFG','WPVdMSkwF11eyfuxW7Hi','W4mXy1H1','fvxcTmkyW4e3sYxcSI7dMZq','W7unWPNdTSksWONcIG','WQVcKmkAWRNdPmo4h2pcQfFdIa','hLnRWQfYzmofe8kYWQRcN8km','W7KwzL9s','gIZdKXCW','WQbUWPSiWOm0tKC','W4iXzfX1','vCoBW5DEW4K','dIlcTcKiWPq','gmkYBCkrFq7dO8kW','wdqdWRZdRHK2k3tdNcJcImkK','C1OhEfZcKrZcLCkq','tWpdRmoUW5VcLSonySoEW4hcH8ov','WQBcVcC','evxcRCkpWPNdL8oYAW','W4eWqKT8W5xcHa','tmkiW7VcVMjonSkkW5FcRMVdVa','WPBdLq1PWP8','WPlcOJtcIXK','WQVdNtXtWRqf','WRFdPCkI','W4ZcGCkHc8kMeG','W40/CW','W5ldVCowyM/dVSoVWPxdTG86dtyP','WOtdJSkazf5tFfq','WPVdG8oYkCkcdHm2ta','s8o1Da','W4yuW5NdKa','W4ynW4hdL1NcIv95W4BdHGrC','W5SYjadcKvZcGmk3smoB','WQ9JWPqAWPiWbefXWRZcOG','WRZcTvzqW48bW43cMHNdRa','bCk0kLpdQSkKWQ42WQZcQrRdQG','WQFcR8kXBW7dHLfdjCoPWONdNG','rq7dRmoyWPjHnYZcMapdSbxdVu8HoCo+','WPy3g0NdSZGOWRHd','W4ldRComE2FdHW','h8kUn10QWPdcSKldS0S0WPtcHf8','dmkIW67dGCoXW4pdHG','WPNdJWbGWPFcMCoRWQH6WR4dxSkbma','fwFcJ8ovuZTcgNJdS11p','xmo+CrfXW4u','WOpcUCkhnJRcHCk1W5ZdJc0JgHWa','bcBdMryroCk8DSkIBW0','vstdP8ouWRS','raSDWQf6CCoTod0UAmoExq','bCkJCSk0CrJdSmkNW6/cTG','W6aLrvXSW7tdJWn/WO/cT0hcJ8kg','WP4XnZZdLSoZW75vnN50W6befq','hvjMW4Cg','e8k7peNdU8k6','WQVdNtXDWQecxq'];_0x4984=function(){return _0xecd3c7;};return _0x4984();}function getRuntime(_0x407b63='claude-code',_0x594ccc={}){const _0x31463b=_0x5e0e75,_0x291e33={'sFjyM':'claude-code','WHabK':_0x31463b(0x135,'f&W1'),'zHANd':function(_0x58fda9,_0x3b95a7){return _0x58fda9(_0x3b95a7);}};switch(_0x407b63){case _0x291e33[_0x31463b(0x11d,'5NRn')]:return new ClaudeRuntime({'ci':_0x594ccc['ci']});case'opencode':throw new Error(_0x291e33[_0x31463b(0x14d,'Fg@r')]);default:{const _0x5cf328=_0x407b63;throw new Error(_0x31463b(0x12e,'ej#J')+_0x291e33['zHANd'](String,_0x5cf328));}}}const PROVIDER_ENV_VAR={'anthropic':_0x5e0e75(0x12b,'dC0P'),'openai':_0x5e0e75(0x133,'xaOE'),'openai-compatible':void 0x0,'custom':void 0x0},DEFAULT_MODEL_BY_PROVIDER={'anthropic':_0x5e0e75(0x16c,'5NRn'),'openai':_0x5e0e75(0x14b,'0EA('),'openai-compatible':void 0x0,'custom':void 0x0};function resolveModel(_0x471988){const _0x202c19=_0x5e0e75;return _0x471988[_0x202c19(0x147,'4FXU')]??_0x471988[_0x202c19(0x167,'s1wv')]??DEFAULT_MODEL_BY_PROVIDER[_0x471988[_0x202c19(0x153,'AMG2')]];}export{ClaudeRuntime,DEFAULT_MODEL_BY_PROVIDER,PROVIDER_ENV_VAR,getRuntime,resolveModel};
|
|
1
|
+
import { ensureClaude, spawnClaude, spawnClaudeBidirectional } from '@yoloship/claude-sdk';
|
|
2
|
+
export { EventStream, classifyEvent, extractFileChange, isErrorEvent, isFileChangedEvent, isOutputEvent, isResultEvent, isThinkingEvent, isToolResultEvent, isToolUseEvent, normalizeEvent } from '@yoloship/claude-sdk';
|
|
3
|
+
|
|
4
|
+
const CI_DEFAULTS = {
|
|
5
|
+
dangerouslySkipPermissions: true,
|
|
6
|
+
attribution: { commit: "", pr: "" },
|
|
7
|
+
autoMemoryEnabled: false
|
|
8
|
+
};
|
|
9
|
+
const CI_PAGER_ENV = {
|
|
10
|
+
GIT_PAGER: "cat",
|
|
11
|
+
GH_PAGER: "cat",
|
|
12
|
+
PAGER: "cat"
|
|
13
|
+
};
|
|
14
|
+
function toClaudeAuth(auth) {
|
|
15
|
+
if (!auth) {
|
|
16
|
+
return void 0;
|
|
17
|
+
}
|
|
18
|
+
return { apiKey: auth.apiKey };
|
|
19
|
+
}
|
|
20
|
+
class ClaudeRuntime {
|
|
21
|
+
id = "claude-code";
|
|
22
|
+
#ci;
|
|
23
|
+
constructor(opts = {}) {
|
|
24
|
+
this.#ci = opts.ci ?? false;
|
|
25
|
+
}
|
|
26
|
+
async ensure(options) {
|
|
27
|
+
await ensureClaude(options);
|
|
28
|
+
}
|
|
29
|
+
run(opts) {
|
|
30
|
+
const claudeOpts = this.#ci ? { ...CI_DEFAULTS, ...this.#toClaudeOptions(opts) } : this.#toClaudeOptions(opts);
|
|
31
|
+
const emitter = spawnClaude(claudeOpts, toClaudeAuth(opts.auth));
|
|
32
|
+
if (opts.onEvent) {
|
|
33
|
+
emitter.events.on(opts.onEvent);
|
|
34
|
+
}
|
|
35
|
+
return emitter.result;
|
|
36
|
+
}
|
|
37
|
+
runBidirectional(opts) {
|
|
38
|
+
const sessionOpts = this.#ci ? { ...CI_DEFAULTS, ...this.#toClaudeSessionOptions(opts) } : this.#toClaudeSessionOptions(opts);
|
|
39
|
+
const bidi = spawnClaudeBidirectional(sessionOpts, toClaudeAuth(opts.auth));
|
|
40
|
+
if (opts.onEvent) {
|
|
41
|
+
bidi.events.on(opts.onEvent);
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
events: bidi.events,
|
|
45
|
+
sendTurn: (message) => bidi.sendMessage(message),
|
|
46
|
+
cancel: () => {
|
|
47
|
+
try {
|
|
48
|
+
bidi.process.kill();
|
|
49
|
+
} catch {
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
close: () => bidi.close(),
|
|
53
|
+
result: bidi.result
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Canonical wire format for `--mcp-config`. Called internally by
|
|
58
|
+
* `#toClaudeSessionOptions` when `opts.mcpServers` is provided; also
|
|
59
|
+
* exposed on the `Runtime` interface for callers that need the
|
|
60
|
+
* serialised payload directly (e.g. writing an mcp-config file).
|
|
61
|
+
*/
|
|
62
|
+
buildMcpConfig(servers) {
|
|
63
|
+
return { mcpServers: servers };
|
|
64
|
+
}
|
|
65
|
+
/** Claude Code consumes `allowedTools` in its native shape — pass through. */
|
|
66
|
+
translateAllowedTools(tools) {
|
|
67
|
+
return tools;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Translate the runtime-agnostic `RunOptions` into Claude's native
|
|
71
|
+
* `ClaudeSessionOptions`. Routes `allowedTools` through
|
|
72
|
+
* `translateAllowedTools()` and `mcpServers` through `buildMcpConfig()`
|
|
73
|
+
* so the public interface methods are load-bearing on the internal
|
|
74
|
+
* execution path.
|
|
75
|
+
*/
|
|
76
|
+
#toClaudeSessionOptions(opts) {
|
|
77
|
+
const rest = {};
|
|
78
|
+
if (opts.systemPrompt !== void 0) {
|
|
79
|
+
rest.systemPrompt = opts.systemPrompt;
|
|
80
|
+
}
|
|
81
|
+
if (opts.model !== void 0) {
|
|
82
|
+
rest.model = opts.model;
|
|
83
|
+
}
|
|
84
|
+
if (opts.maxTurns !== void 0) {
|
|
85
|
+
rest.maxTurns = opts.maxTurns;
|
|
86
|
+
}
|
|
87
|
+
if (opts.allowedTools !== void 0) {
|
|
88
|
+
rest.allowedTools = this.translateAllowedTools(opts.allowedTools);
|
|
89
|
+
}
|
|
90
|
+
if (opts.mcpServers !== void 0) {
|
|
91
|
+
rest.mcpServers = this.buildMcpConfig(opts.mcpServers).mcpServers;
|
|
92
|
+
}
|
|
93
|
+
if (opts.cwd !== void 0) {
|
|
94
|
+
rest.cwd = opts.cwd;
|
|
95
|
+
}
|
|
96
|
+
if (this.#ci) {
|
|
97
|
+
rest.env = { ...CI_PAGER_ENV, ...opts.env ?? {} };
|
|
98
|
+
} else if (opts.env !== void 0) {
|
|
99
|
+
rest.env = opts.env;
|
|
100
|
+
}
|
|
101
|
+
if (opts.sessionId !== void 0) {
|
|
102
|
+
rest.sessionId = opts.sessionId;
|
|
103
|
+
}
|
|
104
|
+
if (opts.resume !== void 0) {
|
|
105
|
+
rest.resume = opts.resume;
|
|
106
|
+
}
|
|
107
|
+
if (opts.language !== void 0) {
|
|
108
|
+
rest.language = opts.language;
|
|
109
|
+
}
|
|
110
|
+
rest.settingSources = ["project", "local"];
|
|
111
|
+
return rest;
|
|
112
|
+
}
|
|
113
|
+
#toClaudeOptions(opts) {
|
|
114
|
+
return { prompt: opts.prompt, ...this.#toClaudeSessionOptions(opts) };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function getRuntime(runtime = "claude-code", opts = {}) {
|
|
119
|
+
switch (runtime) {
|
|
120
|
+
case "claude-code":
|
|
121
|
+
return new ClaudeRuntime({ ci: opts.ci });
|
|
122
|
+
case "opencode":
|
|
123
|
+
throw new Error("opencode runtime is not yet implemented \u2014 see YOL-204");
|
|
124
|
+
default: {
|
|
125
|
+
const unknown = runtime;
|
|
126
|
+
throw new Error(`Unknown runtime: ${String(unknown)}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const PROVIDER_ENV_VAR = {
|
|
132
|
+
"anthropic": "ANTHROPIC_API_KEY",
|
|
133
|
+
"openai": "OPENAI_API_KEY",
|
|
134
|
+
"openai-compatible": void 0,
|
|
135
|
+
"custom": void 0
|
|
136
|
+
};
|
|
137
|
+
const DEFAULT_MODEL_BY_PROVIDER = {
|
|
138
|
+
"anthropic": "claude-sonnet-4-6",
|
|
139
|
+
"openai": "gpt-4o-mini",
|
|
140
|
+
"openai-compatible": void 0,
|
|
141
|
+
"custom": void 0
|
|
142
|
+
};
|
|
143
|
+
function resolveModel(opts) {
|
|
144
|
+
return opts.runOverride ?? opts.agentModel ?? DEFAULT_MODEL_BY_PROVIDER[opts.provider];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export { ClaudeRuntime, DEFAULT_MODEL_BY_PROVIDER, PROVIDER_ENV_VAR, getRuntime, resolveModel };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yoloship/ai",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.0-beta.
|
|
4
|
+
"version": "0.2.0-beta.2",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Yoloship AI — runtime-agnostic coding-agent orchestration layer (consumes @yoloship/claude-sdk today, opencode next)",
|
|
7
7
|
"author": "Yoloship Team <team@yoloship.dev>",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"zod": "^4.4.3",
|
|
36
|
-
"@yoloship/claude-sdk": "0.2.0-beta.
|
|
36
|
+
"@yoloship/claude-sdk": "0.2.0-beta.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"cross-env": "^10.1.0",
|