@code-yeongyu/senpi-ai 2026.9.13-2 → 2026.9.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"devin.d.ts","sourceRoot":"","sources":["../../src/providers/devin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,CA2CvD"}
1
+ {"version":3,"file":"devin.d.ts","sourceRoot":"","sources":["../../src/providers/devin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC,CAiDvD"}
@@ -32,7 +32,13 @@ export function devinProvider() {
32
32
  refreshModels: async (context) => {
33
33
  const stored = context.stored;
34
34
  if (stored) {
35
- const restored = stored.models.filter((model) => model.provider === "devin");
35
+ // Restore-path normalization: catalogs persisted before the
36
+ // no-advertised-thinking-level fix still carry reasoning: true, which
37
+ // would re-expose the dead thinking-level control until the next
38
+ // successful discovery overwrites them.
39
+ const restored = stored.models
40
+ .filter((model) => model.provider === "devin")
41
+ .map((model) => ({ ...model, reasoning: false }));
36
42
  if (restored.length > 0) {
37
43
  await context.publish({
38
44
  update: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"devin.js","sourceRoot":"","sources":["../../src/providers/devin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa;IAC5B,IAAI,MAAM,GAA2B,YAAY,CAAC;IAElD,MAAM,QAAQ,GAAG,cAAc,CAAgB;QAC9C,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE;YACL,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;SAC3F;QACD,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE;KACvC,CAAC,CAAC;IAEH,OAAO;QACN,GAAG,QAAQ;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;QACvB,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAA2B,CAAC;gBACvG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,OAAO,CAAC,OAAO,CAAC;wBACrB,MAAM,EAAE,GAAG,EAAE;4BACZ,MAAM,GAAG,QAAQ,CAAC;wBACnB,CAAC;qBACD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC;YAClF,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/G,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAClD,MAAM,OAAO,CAAC,OAAO,CAAC;gBACrB,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBACtD,MAAM,EAAE,GAAG,EAAE;oBACZ,MAAM,GAAG,UAAU,CAAC;gBACrB,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;AACH,CAAC","sourcesContent":["import { fetchDevinModels } from \"../api/devin-agent/discovery.ts\";\nimport { DEVIN_DEFAULT_BASE_URL } from \"../api/devin-agent/paths.ts\";\nimport { devinAgentApi } from \"../api/devin-agent.lazy.ts\";\nimport { lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadDevinOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport type { Model } from \"../types.ts\";\nimport { DEVIN_MODELS } from \"./devin.models.ts\";\n\n/**\n * Devin (Cognition) Cascade provider.\n *\n * Auth is the CLI session token minted by the Devin OAuth flow. Cascade's\n * catalog is credential-scoped, so the static seed is a floor rather than the\n * truth: once a credential exists, `refreshModels` replaces it with the\n * account's real lanes and KEEPS the seed whenever discovery fails or reports\n * nothing, because publishing an empty catalog would strip a working provider.\n */\nexport function devinProvider(): Provider<\"devin-agent\"> {\n\tlet models: Model<\"devin-agent\">[] = DEVIN_MODELS;\n\n\tconst provider = createProvider<\"devin-agent\">({\n\t\tid: \"devin\",\n\t\tname: \"Devin\",\n\t\tbaseUrl: DEVIN_DEFAULT_BASE_URL,\n\t\tauth: {\n\t\t\toauth: lazyOAuth({ name: \"Devin\", loginLabel: \"Sign in with Devin\", load: loadDevinOAuth }),\n\t\t},\n\t\tmodels: DEVIN_MODELS,\n\t\tapi: { \"devin-agent\": devinAgentApi() },\n\t});\n\n\treturn {\n\t\t...provider,\n\t\tgetModels: () => models,\n\t\trefreshModels: async (context) => {\n\t\t\tconst stored = context.stored;\n\t\t\tif (stored) {\n\t\t\t\tconst restored = stored.models.filter((model) => model.provider === \"devin\") as Model<\"devin-agent\">[];\n\t\t\t\tif (restored.length > 0) {\n\t\t\t\t\tawait context.publish({\n\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\tmodels = restored;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!context.allowNetwork || context.signal.aborted) return;\n\t\t\tconst credential = context.credential;\n\t\t\tconst apiKey = credential?.type === \"oauth\" ? credential.access : credential?.key;\n\t\t\tif (!apiKey) return;\n\t\t\tconst discovered = await fetchDevinModels({ apiKey, baseUrl: DEVIN_DEFAULT_BASE_URL, signal: context.signal });\n\t\t\tif (!discovered || context.signal.aborted) return;\n\t\t\tawait context.publish({\n\t\t\t\tpersist: { models: discovered, checkedAt: Date.now() },\n\t\t\t\tupdate: () => {\n\t\t\t\t\tmodels = discovered;\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"file":"devin.js","sourceRoot":"","sources":["../../src/providers/devin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa;IAC5B,IAAI,MAAM,GAA2B,YAAY,CAAC;IAElD,MAAM,QAAQ,GAAG,cAAc,CAAgB;QAC9C,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE;YACL,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;SAC3F;QACD,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE;KACvC,CAAC,CAAC;IAEH,OAAO;QACN,GAAG,QAAQ;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;QACvB,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,IAAI,MAAM,EAAE,CAAC;gBACZ,4DAA4D;gBAC5D,sEAAsE;gBACtE,iEAAiE;gBACjE,wCAAwC;gBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;qBAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;qBAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAA2B,CAAC;gBAC7E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,OAAO,CAAC,OAAO,CAAC;wBACrB,MAAM,EAAE,GAAG,EAAE;4BACZ,MAAM,GAAG,QAAQ,CAAC;wBACnB,CAAC;qBACD,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC;YAClF,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/G,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAClD,MAAM,OAAO,CAAC,OAAO,CAAC;gBACrB,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBACtD,MAAM,EAAE,GAAG,EAAE;oBACZ,MAAM,GAAG,UAAU,CAAC;gBACrB,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;AACH,CAAC","sourcesContent":["import { fetchDevinModels } from \"../api/devin-agent/discovery.ts\";\nimport { DEVIN_DEFAULT_BASE_URL } from \"../api/devin-agent/paths.ts\";\nimport { devinAgentApi } from \"../api/devin-agent.lazy.ts\";\nimport { lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadDevinOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport type { Model } from \"../types.ts\";\nimport { DEVIN_MODELS } from \"./devin.models.ts\";\n\n/**\n * Devin (Cognition) Cascade provider.\n *\n * Auth is the CLI session token minted by the Devin OAuth flow. Cascade's\n * catalog is credential-scoped, so the static seed is a floor rather than the\n * truth: once a credential exists, `refreshModels` replaces it with the\n * account's real lanes and KEEPS the seed whenever discovery fails or reports\n * nothing, because publishing an empty catalog would strip a working provider.\n */\nexport function devinProvider(): Provider<\"devin-agent\"> {\n\tlet models: Model<\"devin-agent\">[] = DEVIN_MODELS;\n\n\tconst provider = createProvider<\"devin-agent\">({\n\t\tid: \"devin\",\n\t\tname: \"Devin\",\n\t\tbaseUrl: DEVIN_DEFAULT_BASE_URL,\n\t\tauth: {\n\t\t\toauth: lazyOAuth({ name: \"Devin\", loginLabel: \"Sign in with Devin\", load: loadDevinOAuth }),\n\t\t},\n\t\tmodels: DEVIN_MODELS,\n\t\tapi: { \"devin-agent\": devinAgentApi() },\n\t});\n\n\treturn {\n\t\t...provider,\n\t\tgetModels: () => models,\n\t\trefreshModels: async (context) => {\n\t\t\tconst stored = context.stored;\n\t\t\tif (stored) {\n\t\t\t\t// Restore-path normalization: catalogs persisted before the\n\t\t\t\t// no-advertised-thinking-level fix still carry reasoning: true, which\n\t\t\t\t// would re-expose the dead thinking-level control until the next\n\t\t\t\t// successful discovery overwrites them.\n\t\t\t\tconst restored = stored.models\n\t\t\t\t\t.filter((model) => model.provider === \"devin\")\n\t\t\t\t\t.map((model) => ({ ...model, reasoning: false })) as Model<\"devin-agent\">[];\n\t\t\t\tif (restored.length > 0) {\n\t\t\t\t\tawait context.publish({\n\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\tmodels = restored;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!context.allowNetwork || context.signal.aborted) return;\n\t\t\tconst credential = context.credential;\n\t\t\tconst apiKey = credential?.type === \"oauth\" ? credential.access : credential?.key;\n\t\t\tif (!apiKey) return;\n\t\t\tconst discovered = await fetchDevinModels({ apiKey, baseUrl: DEVIN_DEFAULT_BASE_URL, signal: context.signal });\n\t\t\tif (!discovered || context.signal.aborted) return;\n\t\t\tawait context.publish({\n\t\t\t\tpersist: { models: discovered, checkedAt: Date.now() },\n\t\t\t\tupdate: () => {\n\t\t\t\t\tmodels = discovered;\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"devin.models.d.ts","sourceRoot":"","sources":["../../src/providers/devin.models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAuBzC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,EAO9C,CAAC"}
1
+ {"version":3,"file":"devin.models.d.ts","sourceRoot":"","sources":["../../src/providers/devin.models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA4BzC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,EAO9C,CAAC"}
@@ -18,7 +18,12 @@ function devinModel(id, name, contextWindow) {
18
18
  api: "devin-agent",
19
19
  provider: "devin",
20
20
  baseUrl: DEVIN_DEFAULT_BASE_URL,
21
- reasoning: true,
21
+ // Cascade's chat protocol has no request-side thinking field: effort is
22
+ // selected through the lane uid and a generic level is never forwarded.
23
+ // `reasoning: false` hides the dead thinking-level control; streamed
24
+ // thinking output still renders because it is message content, not a
25
+ // capability gate.
26
+ reasoning: false,
22
27
  input: ["text"],
23
28
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
24
29
  contextWindow,
@@ -1 +1 @@
1
- {"version":3,"file":"devin.models.js","sourceRoot":"","sources":["../../src/providers/devin.models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,oBAAoB,GAAG,OAAO,CAAC;AACrC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,SAAS,UAAU,CAAC,EAAU,EAAE,IAAY,EAAE,aAAqB;IAClE,OAAO;QACN,EAAE;QACF,IAAI;QACJ,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,sBAAsB;QAC/B,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1D,aAAa;QACb,SAAS,EAAE,cAAc;QACzB,MAAM,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE;KAC3C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAA2B;IACnD,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,oBAAoB,CAAC;IAC9D,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;IAC5D,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;IAC5D,UAAU,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;IACzE,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAsB,CAAC;IACxD,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,sBAAsB,CAAC;CAClE,CAAC","sourcesContent":["/**\n * Devin's credential-free model seed.\n *\n * Cascade's real catalog is credential-scoped (see api/devin-agent/discovery.ts),\n * so the bundle ships the lanes the released Devin CLI names and lets runtime\n * discovery replace them once an account is signed in. The bare `swe-2` uid is\n * deliberately absent: Cascade only serves SWE-2 through its effort lanes and\n * answers the bare uid with permission_denied.\n */\n\nimport type { Model } from \"../types.ts\";\nimport { DEVIN_DEFAULT_BASE_URL } from \"../api/devin-agent/paths.ts\";\n\nconst SWE_2_CONTEXT_WINDOW = 262_000;\nconst SWE_1_6_CONTEXT_WINDOW = 200_000;\nconst SWE_MAX_TOKENS = 64_000;\n\nfunction devinModel(id: string, name: string, contextWindow: number): Model<\"devin-agent\"> {\n\treturn {\n\t\tid,\n\t\tname,\n\t\tapi: \"devin-agent\",\n\t\tprovider: \"devin\",\n\t\tbaseUrl: DEVIN_DEFAULT_BASE_URL,\n\t\treasoning: true,\n\t\tinput: [\"text\"],\n\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\tcontextWindow,\n\t\tmaxTokens: SWE_MAX_TOKENS,\n\t\tcompat: { supportsParallelToolCalls: true },\n\t};\n}\n\nexport const DEVIN_MODELS: Model<\"devin-agent\">[] = [\n\tdevinModel(\"swe-2-high\", \"SWE-2 (high)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-2-max\", \"SWE-2 (max)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-2-low\", \"SWE-2 (low)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-2-high-lite\", \"SWE-2 (high, lite)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-1-6\", \"SWE-1.6\", SWE_1_6_CONTEXT_WINDOW),\n\tdevinModel(\"swe-1-6-fast\", \"SWE-1.6 Fast\", SWE_1_6_CONTEXT_WINDOW),\n];\n"]}
1
+ {"version":3,"file":"devin.models.js","sourceRoot":"","sources":["../../src/providers/devin.models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,oBAAoB,GAAG,OAAO,CAAC;AACrC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,SAAS,UAAU,CAAC,EAAU,EAAE,IAAY,EAAE,aAAqB;IAClE,OAAO;QACN,EAAE;QACF,IAAI;QACJ,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,sBAAsB;QAC/B,wEAAwE;QACxE,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,mBAAmB;QACnB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1D,aAAa;QACb,SAAS,EAAE,cAAc;QACzB,MAAM,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE;KAC3C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAA2B;IACnD,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,oBAAoB,CAAC;IAC9D,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;IAC5D,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;IAC5D,UAAU,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;IACzE,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAsB,CAAC;IACxD,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,sBAAsB,CAAC;CAClE,CAAC","sourcesContent":["/**\n * Devin's credential-free model seed.\n *\n * Cascade's real catalog is credential-scoped (see api/devin-agent/discovery.ts),\n * so the bundle ships the lanes the released Devin CLI names and lets runtime\n * discovery replace them once an account is signed in. The bare `swe-2` uid is\n * deliberately absent: Cascade only serves SWE-2 through its effort lanes and\n * answers the bare uid with permission_denied.\n */\n\nimport type { Model } from \"../types.ts\";\nimport { DEVIN_DEFAULT_BASE_URL } from \"../api/devin-agent/paths.ts\";\n\nconst SWE_2_CONTEXT_WINDOW = 262_000;\nconst SWE_1_6_CONTEXT_WINDOW = 200_000;\nconst SWE_MAX_TOKENS = 64_000;\n\nfunction devinModel(id: string, name: string, contextWindow: number): Model<\"devin-agent\"> {\n\treturn {\n\t\tid,\n\t\tname,\n\t\tapi: \"devin-agent\",\n\t\tprovider: \"devin\",\n\t\tbaseUrl: DEVIN_DEFAULT_BASE_URL,\n\t\t// Cascade's chat protocol has no request-side thinking field: effort is\n\t\t// selected through the lane uid and a generic level is never forwarded.\n\t\t// `reasoning: false` hides the dead thinking-level control; streamed\n\t\t// thinking output still renders because it is message content, not a\n\t\t// capability gate.\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\tcontextWindow,\n\t\tmaxTokens: SWE_MAX_TOKENS,\n\t\tcompat: { supportsParallelToolCalls: true },\n\t};\n}\n\nexport const DEVIN_MODELS: Model<\"devin-agent\">[] = [\n\tdevinModel(\"swe-2-high\", \"SWE-2 (high)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-2-max\", \"SWE-2 (max)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-2-low\", \"SWE-2 (low)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-2-high-lite\", \"SWE-2 (high, lite)\", SWE_2_CONTEXT_WINDOW),\n\tdevinModel(\"swe-1-6\", \"SWE-1.6\", SWE_1_6_CONTEXT_WINDOW),\n\tdevinModel(\"swe-1-6-fast\", \"SWE-1.6 Fast\", SWE_1_6_CONTEXT_WINDOW),\n];\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/senpi-ai",
3
- "version": "2026.9.13-2",
3
+ "version": "2026.9.15",
4
4
  "description": "Unified LLM API with automatic model discovery and provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -84,7 +84,7 @@
84
84
  "dependencies": {
85
85
  "@anthropic-ai/sdk": "0.123.0",
86
86
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
87
- "@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.13-2",
87
+ "@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.15",
88
88
  "@google/genai": "2.21.0",
89
89
  "@smithy/node-http-handler": "4.12.1",
90
90
  "http-proxy-agent": "9.1.0",