@agentproto/adapter-jcode 0.2.0 → 0.2.1
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.d.ts +8 -1
- package/dist/index.mjs +11 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,14 @@ import { CapabilityStrategy } from '@agentproto/provider-kit';
|
|
|
9
9
|
* (Claude, OpenAI, Gemini, OpenRouter, Copilot, DeepSeek, Groq, Mistral,
|
|
10
10
|
* Ollama, and OpenAI-compatible endpoints). No ACP mode is documented, so
|
|
11
11
|
* this is a `protocol: "print"` (headless) arm: we spawn `jcode run
|
|
12
|
-
* "<prompt>"` per turn and
|
|
12
|
+
* --ndjson "<prompt>"` per turn and map its NDJSON stream (see the
|
|
13
|
+
* `jcode-ndjson` mapper in the driver's print-arm).
|
|
14
|
+
*
|
|
15
|
+
* Argv order matters: `run` is a clap SUBCOMMAND, so it lives in
|
|
16
|
+
* `bin_args` (the spawn base) — every composed flag (`--ndjson`,
|
|
17
|
+
* `--model`, `--resume`) must come AFTER it or jcode rejects the argv
|
|
18
|
+
* (`error: unexpected argument '--json' found`). The prompt is
|
|
19
|
+
* positional, not a flag.
|
|
13
20
|
*
|
|
14
21
|
* import { jcode, jcodeRuntime } from "@agentproto/adapter-jcode"
|
|
15
22
|
* const session = await jcodeRuntime().start({
|
package/dist/index.mjs
CHANGED
|
@@ -37,9 +37,13 @@ function buildJcodeModelMenu() {
|
|
|
37
37
|
var jcode = defineAgentCli({
|
|
38
38
|
name: "jcode",
|
|
39
39
|
id: "jcode",
|
|
40
|
-
description: "1jehuang/jcode \u2014 RAM-efficient Rust coding agent with semantic memory, multi-agent swarm, and broad provider support (Claude, OpenAI, Gemini, OpenRouter, Copilot, DeepSeek, Groq, Mistral, Ollama). Spawned via `jcode run` in headless mode. No ACP; print/headless arm.",
|
|
40
|
+
description: "1jehuang/jcode \u2014 RAM-efficient Rust coding agent with semantic memory, multi-agent swarm, and broad provider support (Claude, OpenAI, Gemini, OpenRouter, Copilot, DeepSeek, Groq, Mistral, Ollama). Spawned via `jcode run --ndjson` in headless mode. No ACP; print/headless arm.",
|
|
41
41
|
version: "0.1.0",
|
|
42
42
|
bin: "jcode",
|
|
43
|
+
// `run` is a clap subcommand — it must precede every composed flag, so it
|
|
44
|
+
// lives in the spawn base rather than as a print `prompt_flag` (which
|
|
45
|
+
// would land AFTER `--ndjson`/`--model` and be rejected by jcode).
|
|
46
|
+
bin_args: ["run"],
|
|
43
47
|
install: [
|
|
44
48
|
{ method: "brew", package: "1jehuang/jcode/jcode" },
|
|
45
49
|
{ method: "curl", url: "https://jcode.sh/install" },
|
|
@@ -69,10 +73,11 @@ var jcode = defineAgentCli({
|
|
|
69
73
|
sandbox: "./SANDBOX.md",
|
|
70
74
|
protocol: "print",
|
|
71
75
|
print: {
|
|
72
|
-
prompt_flag:
|
|
73
|
-
output_format: [],
|
|
76
|
+
// No prompt_flag: the message is positional after `run` (in bin_args).
|
|
77
|
+
output_format: ["--ndjson"],
|
|
74
78
|
pre_prompt: [],
|
|
75
|
-
resume: { flag: "--resume", kind: "value" }
|
|
79
|
+
resume: { flag: "--resume", kind: "value" },
|
|
80
|
+
event_schema: "jcode-ndjson"
|
|
76
81
|
},
|
|
77
82
|
session: {
|
|
78
83
|
mode: "ephemeral",
|
|
@@ -159,6 +164,8 @@ var jcodeCapabilities = async (def, ctx) => {
|
|
|
159
164
|
}));
|
|
160
165
|
return {
|
|
161
166
|
...base,
|
|
167
|
+
source: "discovered",
|
|
168
|
+
discoverable: "live",
|
|
162
169
|
providers,
|
|
163
170
|
application: { modelApply: "arg", postureApply: "arg", coupled: false }
|
|
164
171
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @agentproto/adapter-jcode — AIP-45 adapter for 1jehuang/jcode.\n *\n * jcode is a RAM-efficient Rust coding agent with multi-provider support\n * (Claude, OpenAI, Gemini, OpenRouter, Copilot, DeepSeek, Groq, Mistral,\n * Ollama, and OpenAI-compatible endpoints). No ACP mode is documented, so\n * this is a `protocol: \"print\"` (headless) arm: we spawn `jcode run\n * \"<prompt>\"` per turn and capture stdout.\n *\n * import { jcode, jcodeRuntime } from \"@agentproto/adapter-jcode\"\n * const session = await jcodeRuntime().start({\n * env: { ANTHROPIC_API_KEY: \"sk-...\" },\n * })\n * for await (const evt of session.send({ role: \"user\", content: \"...\" })) {\n * console.log(evt)\n * }\n * await session.close()\n */\n\nimport {\n createAgentCliRuntime,\n defineAgentCli,\n type AgentCliHandle,\n type AgentCliRuntime,\n} from \"@agentproto/driver-agent-cli\"\nimport { listModels } from \"@agentproto/model-catalog\"\nimport {\n deriveDeclaredCapabilities,\n type CapabilityStrategy,\n type ProviderCapability,\n} from \"@agentproto/provider-kit\"\n\n/**\n * Build jcode's model menu from the shared provider catalog. jcode accepts\n * bare model ids via `--model`; the provider is inferred from the id or\n * specified explicitly via `--provider`.\n */\nfunction buildJcodeModelMenu(): Array<{ id: string; provider: string }> {\n const supported = [\n { provider: \"anthropic\", prefix: \"anthropic\" },\n { provider: \"openai\", prefix: \"openai\" },\n { provider: \"openrouter\", prefix: \"openrouter\" },\n { provider: \"google\", prefix: \"google\" },\n { provider: \"deepseek\", prefix: \"deepseek\" },\n { provider: \"groq\", prefix: \"groq\" },\n { provider: \"mistral\", prefix: \"mistral\" },\n ] as const\n\n const seen = new Set<string>()\n const out: Array<{ id: string; provider: string }> = []\n\n for (const { provider, prefix } of supported) {\n for (const model of listModels({ kind: \"llm\", provider })) {\n const bareId = model.id\n const canonicalId = bareId.includes(\"/\") ? bareId : `${prefix}/${bareId}`\n const id =\n provider === \"openrouter\" ? `openrouter/${bareId}` : canonicalId\n if (seen.has(id)) continue\n seen.add(id)\n out.push({ id, provider })\n }\n }\n\n return out.sort((a, b) => {\n if (a.provider !== b.provider) return a.provider.localeCompare(b.provider)\n return a.id.localeCompare(b.id)\n })\n}\n\nexport const jcode: AgentCliHandle = defineAgentCli({\n name: \"jcode\",\n id: \"jcode\",\n description:\n \"1jehuang/jcode — RAM-efficient Rust coding agent with semantic memory, \" +\n \"multi-agent swarm, and broad provider support (Claude, OpenAI, Gemini, \" +\n \"OpenRouter, Copilot, DeepSeek, Groq, Mistral, Ollama). Spawned via \" +\n \"`jcode run` in headless mode. No ACP; print/headless arm.\",\n version: \"0.1.0\",\n bin: \"jcode\",\n install: [\n { method: \"brew\", package: \"1jehuang/jcode/jcode\" },\n { method: \"curl\", url: \"https://jcode.sh/install\" },\n { method: \"cargo\", package: \"jcode\" },\n ],\n version_check: {\n cmd: \"jcode --version\",\n parse: \"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+)\",\n range: \">=0.1.0\",\n timeout_ms: 15_000,\n },\n auth: {\n ref: \"./SECRETS.md\",\n state: {\n env: [\n \"ANTHROPIC_API_KEY\",\n \"OPENAI_API_KEY\",\n \"OPENROUTER_API_KEY\",\n \"GOOGLE_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"GROQ_API_KEY\",\n \"MISTRAL_API_KEY\",\n ],\n },\n },\n modelDerivedApiKey: true,\n sandbox: \"./SANDBOX.md\",\n protocol: \"print\",\n print: {\n prompt_flag: \"run\",\n output_format: [],\n pre_prompt: [],\n resume: { flag: \"--resume\", kind: \"value\" },\n },\n session: {\n mode: \"ephemeral\",\n idle_timeout_ms: 1_800_000,\n context_carryover: false,\n },\n routeSelection: \"derived-from-model\",\n models: {\n default: \"anthropic/claude-sonnet-4-5\",\n allowed: buildJcodeModelMenu(),\n env: {\n anthropic: \"ANTHROPIC_API_KEY\",\n openai: \"OPENAI_API_KEY\",\n openrouter: \"OPENROUTER_API_KEY\",\n google: \"GOOGLE_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n groq: \"GROQ_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n },\n },\n capabilities: {\n streaming: true,\n tool_calls: true,\n sub_agents: true,\n file_io: true,\n multimodal: false,\n resumable: true,\n bidirectional: false,\n },\n options: [\n {\n id: \"model\",\n type: \"string\",\n description:\n \"Model id for this run (e.g. `claude-sonnet-4-5`). Forwarded to `--model`.\",\n bin_args_template: [\"--model\", \"{value}\"],\n },\n {\n id: \"provider\",\n type: \"string\",\n description:\n \"Provider override (e.g. `claude`, `openai`, `gemini`). Forwarded to `--provider`.\",\n bin_args_template: [\"--provider\", \"{value}\"],\n },\n {\n id: \"provider_profile\",\n type: \"string\",\n description:\n \"Named provider profile for multi-account setups. Forwarded to `--provider-profile`.\",\n bin_args_template: [\"--provider-profile\", \"{value}\"],\n },\n ],\n continuation: {\n default: \"none\",\n supported: [\"none\", \"transcript\", \"native-resume\"],\n },\n metadata: {\n acp: {\n checked: \"2026-08-11\",\n result:\n \"jcode has no documented ACP mode. The CLI exposes `jcode serve` \" +\n \"(background server) and `jcode connect` (client attach), but neither \" +\n \"speaks ACP over stdio. Adapter stays print/headless until ACP ships.\",\n },\n swarm: {\n checked: \"2026-08-11\",\n result:\n \"jcode supports multi-agent swarm coordination: automatic conflict \" +\n \"detection, inter-agent messaging (DM + broadcast), and repo-scoped \" +\n \"collaboration. Not yet wired into the adapter.\",\n },\n },\n tags: [\"jcode\", \"rust\", \"print\", \"agent-runtime\", \"coding\", \"multi-provider\"],\n})\n\nexport function jcodeRuntime(): AgentCliRuntime {\n return createAgentCliRuntime(jcode)\n}\n\nfunction apiModeForProvider(id: string): ProviderCapability[\"apiMode\"] {\n if (id === \"anthropic\") return \"anthropic\"\n if (\n id === \"openai\" ||\n id === \"openrouter\" ||\n id === \"deepseek\" ||\n id === \"groq\" ||\n id === \"mistral\"\n )\n return \"chat_completions\"\n return undefined\n}\n\nexport const jcodeCapabilities: CapabilityStrategy = async (def, ctx) => {\n const base = deriveDeclaredCapabilities(def)\n const providers: ProviderCapability[] = base.providers.map((p) => ({\n ...p,\n apiMode: apiModeForProvider(p.id),\n cred: {\n ...p.cred,\n present: !!ctx.env[p.cred.source.kind === \"env\" ? p.cred.source.var : \"\"],\n },\n }))\n return {\n ...base,\n providers,\n application: { modelApply: \"arg\", postureApply: \"arg\", coupled: false },\n }\n}\n\nexport type { AgentCliHandle, AgentCliRuntime }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @agentproto/adapter-jcode — AIP-45 adapter for 1jehuang/jcode.\n *\n * jcode is a RAM-efficient Rust coding agent with multi-provider support\n * (Claude, OpenAI, Gemini, OpenRouter, Copilot, DeepSeek, Groq, Mistral,\n * Ollama, and OpenAI-compatible endpoints). No ACP mode is documented, so\n * this is a `protocol: \"print\"` (headless) arm: we spawn `jcode run\n * --ndjson \"<prompt>\"` per turn and map its NDJSON stream (see the\n * `jcode-ndjson` mapper in the driver's print-arm).\n *\n * Argv order matters: `run` is a clap SUBCOMMAND, so it lives in\n * `bin_args` (the spawn base) — every composed flag (`--ndjson`,\n * `--model`, `--resume`) must come AFTER it or jcode rejects the argv\n * (`error: unexpected argument '--json' found`). The prompt is\n * positional, not a flag.\n *\n * import { jcode, jcodeRuntime } from \"@agentproto/adapter-jcode\"\n * const session = await jcodeRuntime().start({\n * env: { ANTHROPIC_API_KEY: \"sk-...\" },\n * })\n * for await (const evt of session.send({ role: \"user\", content: \"...\" })) {\n * console.log(evt)\n * }\n * await session.close()\n */\n\nimport {\n createAgentCliRuntime,\n defineAgentCli,\n type AgentCliHandle,\n type AgentCliRuntime,\n} from \"@agentproto/driver-agent-cli\"\nimport { listModels } from \"@agentproto/model-catalog\"\nimport {\n deriveDeclaredCapabilities,\n type CapabilityStrategy,\n type ProviderCapability,\n} from \"@agentproto/provider-kit\"\n\n/**\n * Build jcode's model menu from the shared provider catalog. jcode accepts\n * bare model ids via `--model`; the provider is inferred from the id or\n * specified explicitly via `--provider`.\n */\nfunction buildJcodeModelMenu(): Array<{ id: string; provider: string }> {\n const supported = [\n { provider: \"anthropic\", prefix: \"anthropic\" },\n { provider: \"openai\", prefix: \"openai\" },\n { provider: \"openrouter\", prefix: \"openrouter\" },\n { provider: \"google\", prefix: \"google\" },\n { provider: \"deepseek\", prefix: \"deepseek\" },\n { provider: \"groq\", prefix: \"groq\" },\n { provider: \"mistral\", prefix: \"mistral\" },\n ] as const\n\n const seen = new Set<string>()\n const out: Array<{ id: string; provider: string }> = []\n\n for (const { provider, prefix } of supported) {\n for (const model of listModels({ kind: \"llm\", provider })) {\n const bareId = model.id\n const canonicalId = bareId.includes(\"/\") ? bareId : `${prefix}/${bareId}`\n const id =\n provider === \"openrouter\" ? `openrouter/${bareId}` : canonicalId\n if (seen.has(id)) continue\n seen.add(id)\n out.push({ id, provider })\n }\n }\n\n return out.sort((a, b) => {\n if (a.provider !== b.provider) return a.provider.localeCompare(b.provider)\n return a.id.localeCompare(b.id)\n })\n}\n\nexport const jcode: AgentCliHandle = defineAgentCli({\n name: \"jcode\",\n id: \"jcode\",\n description:\n \"1jehuang/jcode — RAM-efficient Rust coding agent with semantic memory, \" +\n \"multi-agent swarm, and broad provider support (Claude, OpenAI, Gemini, \" +\n \"OpenRouter, Copilot, DeepSeek, Groq, Mistral, Ollama). Spawned via \" +\n \"`jcode run --ndjson` in headless mode. No ACP; print/headless arm.\",\n version: \"0.1.0\",\n bin: \"jcode\",\n // `run` is a clap subcommand — it must precede every composed flag, so it\n // lives in the spawn base rather than as a print `prompt_flag` (which\n // would land AFTER `--ndjson`/`--model` and be rejected by jcode).\n bin_args: [\"run\"],\n install: [\n { method: \"brew\", package: \"1jehuang/jcode/jcode\" },\n { method: \"curl\", url: \"https://jcode.sh/install\" },\n { method: \"cargo\", package: \"jcode\" },\n ],\n version_check: {\n cmd: \"jcode --version\",\n parse: \"(\\\\d+\\\\.\\\\d+\\\\.\\\\d+)\",\n range: \">=0.1.0\",\n timeout_ms: 15_000,\n },\n auth: {\n ref: \"./SECRETS.md\",\n state: {\n env: [\n \"ANTHROPIC_API_KEY\",\n \"OPENAI_API_KEY\",\n \"OPENROUTER_API_KEY\",\n \"GOOGLE_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"GROQ_API_KEY\",\n \"MISTRAL_API_KEY\",\n ],\n },\n },\n modelDerivedApiKey: true,\n sandbox: \"./SANDBOX.md\",\n protocol: \"print\",\n print: {\n // No prompt_flag: the message is positional after `run` (in bin_args).\n output_format: [\"--ndjson\"],\n pre_prompt: [],\n resume: { flag: \"--resume\", kind: \"value\" },\n event_schema: \"jcode-ndjson\",\n },\n session: {\n mode: \"ephemeral\",\n idle_timeout_ms: 1_800_000,\n context_carryover: false,\n },\n routeSelection: \"derived-from-model\",\n models: {\n default: \"anthropic/claude-sonnet-4-5\",\n allowed: buildJcodeModelMenu(),\n env: {\n anthropic: \"ANTHROPIC_API_KEY\",\n openai: \"OPENAI_API_KEY\",\n openrouter: \"OPENROUTER_API_KEY\",\n google: \"GOOGLE_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n groq: \"GROQ_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n },\n },\n capabilities: {\n streaming: true,\n tool_calls: true,\n sub_agents: true,\n file_io: true,\n multimodal: false,\n resumable: true,\n bidirectional: false,\n },\n options: [\n {\n id: \"model\",\n type: \"string\",\n description:\n \"Model id for this run (e.g. `claude-sonnet-4-5`). Forwarded to `--model`.\",\n bin_args_template: [\"--model\", \"{value}\"],\n },\n {\n id: \"provider\",\n type: \"string\",\n description:\n \"Provider override (e.g. `claude`, `openai`, `gemini`). Forwarded to `--provider`.\",\n bin_args_template: [\"--provider\", \"{value}\"],\n },\n {\n id: \"provider_profile\",\n type: \"string\",\n description:\n \"Named provider profile for multi-account setups. Forwarded to `--provider-profile`.\",\n bin_args_template: [\"--provider-profile\", \"{value}\"],\n },\n ],\n continuation: {\n default: \"none\",\n supported: [\"none\", \"transcript\", \"native-resume\"],\n },\n metadata: {\n acp: {\n checked: \"2026-08-11\",\n result:\n \"jcode has no documented ACP mode. The CLI exposes `jcode serve` \" +\n \"(background server) and `jcode connect` (client attach), but neither \" +\n \"speaks ACP over stdio. Adapter stays print/headless until ACP ships.\",\n },\n swarm: {\n checked: \"2026-08-11\",\n result:\n \"jcode supports multi-agent swarm coordination: automatic conflict \" +\n \"detection, inter-agent messaging (DM + broadcast), and repo-scoped \" +\n \"collaboration. Not yet wired into the adapter.\",\n },\n },\n tags: [\"jcode\", \"rust\", \"print\", \"agent-runtime\", \"coding\", \"multi-provider\"],\n})\n\nexport function jcodeRuntime(): AgentCliRuntime {\n return createAgentCliRuntime(jcode)\n}\n\nfunction apiModeForProvider(id: string): ProviderCapability[\"apiMode\"] {\n if (id === \"anthropic\") return \"anthropic\"\n if (\n id === \"openai\" ||\n id === \"openrouter\" ||\n id === \"deepseek\" ||\n id === \"groq\" ||\n id === \"mistral\"\n )\n return \"chat_completions\"\n return undefined\n}\n\nexport const jcodeCapabilities: CapabilityStrategy = async (def, ctx) => {\n const base = deriveDeclaredCapabilities(def)\n const providers: ProviderCapability[] = base.providers.map((p) => ({\n ...p,\n apiMode: apiModeForProvider(p.id),\n cred: {\n ...p.cred,\n present: !!ctx.env[p.cred.source.kind === \"env\" ? p.cred.source.var : \"\"],\n },\n }))\n return {\n ...base,\n source: \"discovered\",\n discoverable: \"live\",\n providers,\n application: { modelApply: \"arg\", postureApply: \"arg\", coupled: false },\n }\n}\n\nexport type { AgentCliHandle, AgentCliRuntime }\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentproto/adapter-jcode",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "@agentproto/adapter-jcode — AIP-45 adapter for 1jehuang/jcode, a RAM-efficient Rust coding agent. Spawns `jcode run` in headless mode.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agentproto",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@agentproto/driver-agent-cli": "2.
|
|
44
|
+
"@agentproto/driver-agent-cli": "2.3.0",
|
|
45
45
|
"@agentproto/model-catalog": "0.8.3",
|
|
46
46
|
"@agentproto/provider-kit": "0.4.1"
|
|
47
47
|
},
|