@xenosystem/acp 0.2.1 → 0.2.3

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 CHANGED
@@ -9,5 +9,5 @@
9
9
  * Env overrides: XENO_ACP_CONFIG, HOST, PORT, XENO_ACP_LOG.
10
10
  */
11
11
  export { buildServer } from "./server.js";
12
- export declare const VERSION = "0.2.1";
12
+ export declare const VERSION = "0.2.3";
13
13
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@ import { buildServer } from "./server.js";
18
18
  // starting one (importing this module must have no side effects).
19
19
  export { buildServer } from "./server.js";
20
20
  const log = createLogger("server");
21
- export const VERSION = "0.2.1";
21
+ export const VERSION = "0.2.3";
22
22
  function usage() {
23
23
  return [
24
24
  `xeno-acp ${VERSION} — OpenAI-compatible ACP gateway`,
package/dist/openai.d.ts CHANGED
@@ -33,10 +33,17 @@ export interface ChatCompletionRequest {
33
33
  max_tokens?: number;
34
34
  user?: string;
35
35
  }
36
+ /**
37
+ * ⚠️ EVERY FIELD IS OPTIONAL, because a count we were not given is not a count of zero.
38
+ *
39
+ * An absent field means the agent did not report it. A present `0` means it really did report
40
+ * zero — which is a legitimate reading at the start of a session. Collapsing the two is the defect
41
+ * this whole signal keeps rediscovering.
42
+ */
36
43
  export interface Usage {
37
- prompt_tokens: number;
38
- completion_tokens: number;
39
- total_tokens: number;
44
+ prompt_tokens?: number;
45
+ completion_tokens?: number;
46
+ total_tokens?: number;
40
47
  }
41
48
  export declare function makeCompletionId(): string;
42
49
  /** Unix seconds. (Plain Node runtime — Date is available here.) */
@@ -48,14 +55,30 @@ export interface CompletionParts {
48
55
  created: number;
49
56
  model: string;
50
57
  }
51
- export declare function buildCompletion(parts: CompletionParts, text: string, finishReason: string, usage: Usage): unknown;
58
+ export declare function buildCompletion(parts: CompletionParts, text: string, finishReason: string, usage: Usage | undefined): unknown;
52
59
  export declare function buildChunk(parts: CompletionParts, delta: Record<string, unknown>, finishReason: string | null): unknown;
53
60
  export declare function sse(data: unknown): string;
54
61
  export declare const SSE_DONE = "data: [DONE]\n\n";
55
- /** Best-effort usage object when the agent didn't report token counts. */
62
+ /**
63
+ * The usage object for a completion — or `undefined` when the agent reported nothing.
64
+ *
65
+ * 🔴 THIS USED TO MANUFACTURE `prompt_tokens: 0`, and the client that believes it is OURS.
66
+ * `xeno-agent-sdk`'s `usageValues()` treats a numeric `prompt_tokens` as a genuine provider
67
+ * reading, so a synthesised zero became `usageReported: true` with `contextTokens: 0` — rendering
68
+ * **`0 / 200.0K context (about 0%)`**, which is what a genuinely empty context looks like. That is
69
+ * the exact render `usageReported` was added to the SDK to remove, arriving over the wire from a
70
+ * XENO surface instead.
71
+ *
72
+ * ⚠️ The gateway is deliberately “the same shape as xeno-rt so clients can swap base URLs”, so an
73
+ * SDK pointed here is an intended configuration, not a hypothetical. Both halves are ours and each
74
+ * looked locally correct: the gateway filled a required field, the SDK trusted a reported number.
75
+ *
76
+ * ⚠️ Reported fields are carried INDIVIDUALLY. An agent that reports completion but not prompt
77
+ * gets a usage object with one field, not a zero standing in for the other.
78
+ */
56
79
  export declare function usageFrom(u: {
57
80
  prompt?: number;
58
81
  completion?: number;
59
82
  total?: number;
60
- } | undefined): Usage;
83
+ } | undefined): Usage | undefined;
61
84
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,IAAI,GACJ,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;IAC7D,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,mEAAmE;AACnE,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAYD,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAS1E;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,KAAK,GACX,OAAO,CAeT;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAQT;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED,eAAO,MAAM,QAAQ,qBAAqB,CAAC;AAE3C,0EAA0E;AAC1E,wBAAgB,SAAS,CACvB,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACtE,KAAK,CAKP"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,IAAI,GACJ,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;IAC7D,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,mEAAmE;AACnE,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAYD,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAS1E;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,GACvB,OAAO,CAgBT;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAQT;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEzC;AAED,eAAO,MAAM,QAAQ,qBAAqB,CAAC;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACtE,KAAK,GAAG,SAAS,CAenB"}
package/dist/openai.js CHANGED
@@ -48,7 +48,8 @@ export function buildCompletion(parts, text, finishReason, usage) {
48
48
  finish_reason: finishReason,
49
49
  },
50
50
  ],
51
- usage,
51
+ // Omitted entirely when nothing was reported — absence is the honest signal.
52
+ ...(usage === undefined ? {} : { usage }),
52
53
  };
53
54
  }
54
55
  export function buildChunk(parts, delta, finishReason) {
@@ -64,11 +65,38 @@ export function sse(data) {
64
65
  return `data: ${JSON.stringify(data)}\n\n`;
65
66
  }
66
67
  export const SSE_DONE = "data: [DONE]\n\n";
67
- /** Best-effort usage object when the agent didn't report token counts. */
68
+ /**
69
+ * The usage object for a completion — or `undefined` when the agent reported nothing.
70
+ *
71
+ * 🔴 THIS USED TO MANUFACTURE `prompt_tokens: 0`, and the client that believes it is OURS.
72
+ * `xeno-agent-sdk`'s `usageValues()` treats a numeric `prompt_tokens` as a genuine provider
73
+ * reading, so a synthesised zero became `usageReported: true` with `contextTokens: 0` — rendering
74
+ * **`0 / 200.0K context (about 0%)`**, which is what a genuinely empty context looks like. That is
75
+ * the exact render `usageReported` was added to the SDK to remove, arriving over the wire from a
76
+ * XENO surface instead.
77
+ *
78
+ * ⚠️ The gateway is deliberately “the same shape as xeno-rt so clients can swap base URLs”, so an
79
+ * SDK pointed here is an intended configuration, not a hypothetical. Both halves are ours and each
80
+ * looked locally correct: the gateway filled a required field, the SDK trusted a reported number.
81
+ *
82
+ * ⚠️ Reported fields are carried INDIVIDUALLY. An agent that reports completion but not prompt
83
+ * gets a usage object with one field, not a zero standing in for the other.
84
+ */
68
85
  export function usageFrom(u) {
69
- const prompt = u?.prompt ?? 0;
70
- const completion = u?.completion ?? 0;
71
- const total = u?.total ?? prompt + completion;
72
- return { prompt_tokens: prompt, completion_tokens: completion, total_tokens: total };
86
+ const reported = (value) => typeof value === "number" && Number.isFinite(value);
87
+ const prompt = reported(u?.prompt) ? u?.prompt : undefined;
88
+ const completion = reported(u?.completion) ? u?.completion : undefined;
89
+ // A total is reported, or derivable only when BOTH parts are known. Deriving it from one part
90
+ // would report a partial figure as the whole.
91
+ const total = reported(u?.total)
92
+ ? u?.total
93
+ : prompt !== undefined && completion !== undefined ? prompt + completion : undefined;
94
+ if (prompt === undefined && completion === undefined && total === undefined)
95
+ return undefined;
96
+ return {
97
+ ...(prompt === undefined ? {} : { prompt_tokens: prompt }),
98
+ ...(completion === undefined ? {} : { completion_tokens: completion }),
99
+ ...(total === undefined ? {} : { total_tokens: total }),
100
+ };
73
101
  }
74
102
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+CzC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,YAAY,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,2EAA2E;AAC3E,SAAS,aAAa,CAAC,OAAsB;IAC3C,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAChE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,QAAyB;IACzD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,OAAO;YACL,IAAI,EAAE,IAA2B;YACjC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;YACjC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,UAAU,eAAe,CAC7B,KAAsB,EACtB,IAAY,EACZ,YAAoB,EACpB,KAAwB;IAExB,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;gBAC7C,aAAa,EAAE,YAAY;aAC5B;SACF;QACD,6EAA6E;QAC7E,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAsB,EACtB,KAA8B,EAC9B,YAA2B;IAE3B,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,uBAAuB;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAa;IAC/B,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CACvB,CAAuE;IAEvE,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAW,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,8FAA8F;IAC9F,8CAA8C;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;QAC9B,CAAC,CAAC,CAAC,EAAE,KAAK;QACV,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9F,OAAO;QACL,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;QAC1D,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;QACtE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@xenosystem/acp",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "OpenAI-compatible HTTP gateway for xeno-acp: drive any ACP agent via /v1/chat/completions.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "bin": {
10
- "xeno-acp": "./dist/index.js"
10
+ "xeno-acp": "dist/index.js"
11
11
  },
12
12
  "files": [
13
13
  "dist",
@@ -39,8 +39,8 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "fastify": "^5.1.0",
43
- "@xenosystem/acp-core": "^0.2.1"
42
+ "@xenosystem/acp-core": "^0.2.3",
43
+ "fastify": "^5.1.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^22.9.0",