coding-agent-forge 0.1.1 → 1.0.0

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 (73) hide show
  1. package/README.md +130 -11
  2. package/agent-forge.yaml +19 -0
  3. package/dist/agent/agent.d.ts +11 -0
  4. package/dist/agent/agent.d.ts.map +1 -0
  5. package/dist/agent/agent.js +13 -0
  6. package/dist/agent/agent.js.map +1 -0
  7. package/dist/agent/config.d.ts +15 -0
  8. package/dist/agent/config.d.ts.map +1 -0
  9. package/dist/agent/config.js +49 -0
  10. package/dist/agent/config.js.map +1 -0
  11. package/dist/agent/factories.d.ts +5 -0
  12. package/dist/agent/factories.d.ts.map +1 -0
  13. package/dist/agent/factories.js +5 -0
  14. package/dist/agent/factories.js.map +1 -0
  15. package/dist/agent/index.d.ts +10 -0
  16. package/dist/agent/index.d.ts.map +1 -0
  17. package/dist/agent/index.js +6 -0
  18. package/dist/agent/index.js.map +1 -0
  19. package/dist/agent/team.d.ts +19 -0
  20. package/dist/agent/team.d.ts.map +1 -0
  21. package/dist/agent/team.js +81 -0
  22. package/dist/agent/team.js.map +1 -0
  23. package/dist/agent/template.d.ts +12 -0
  24. package/dist/agent/template.d.ts.map +1 -0
  25. package/dist/agent/template.js +37 -0
  26. package/dist/agent/template.js.map +1 -0
  27. package/dist/cli.js +35 -21
  28. package/dist/cli.js.map +1 -1
  29. package/dist/config.d.ts +6 -0
  30. package/dist/config.d.ts.map +1 -0
  31. package/dist/config.js +22 -0
  32. package/dist/config.js.map +1 -0
  33. package/dist/index.d.ts +3 -8
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +3 -6
  36. package/dist/index.js.map +1 -1
  37. package/dist/runtime/claude.d.ts +3 -1
  38. package/dist/runtime/claude.d.ts.map +1 -1
  39. package/dist/runtime/claude.js +9 -8
  40. package/dist/runtime/claude.js.map +1 -1
  41. package/dist/runtime/codex.d.ts +1 -1
  42. package/dist/runtime/codex.d.ts.map +1 -1
  43. package/dist/runtime/codex.js +4 -15
  44. package/dist/runtime/codex.js.map +1 -1
  45. package/dist/runtime/config.d.ts +19 -12
  46. package/dist/runtime/config.d.ts.map +1 -1
  47. package/dist/runtime/config.js +55 -45
  48. package/dist/runtime/config.js.map +1 -1
  49. package/dist/runtime/format.d.ts +4 -0
  50. package/dist/runtime/format.d.ts.map +1 -0
  51. package/dist/runtime/format.js +16 -0
  52. package/dist/runtime/format.js.map +1 -0
  53. package/dist/runtime/index.d.ts +4 -4
  54. package/dist/runtime/index.d.ts.map +1 -1
  55. package/dist/runtime/index.js +2 -19
  56. package/dist/runtime/index.js.map +1 -1
  57. package/dist/runtime/opencode.d.ts +1 -1
  58. package/dist/runtime/opencode.d.ts.map +1 -1
  59. package/dist/runtime/opencode.js +4 -8
  60. package/dist/runtime/opencode.js.map +1 -1
  61. package/dist/runtime/qwen.d.ts +4 -3
  62. package/dist/runtime/qwen.d.ts.map +1 -1
  63. package/dist/runtime/qwen.js +11 -8
  64. package/dist/runtime/qwen.js.map +1 -1
  65. package/dist/runtime/types.d.ts +46 -36
  66. package/dist/runtime/types.d.ts.map +1 -1
  67. package/dist/runtime/types.js +10 -0
  68. package/dist/runtime/types.js.map +1 -1
  69. package/dist/utils/object.d.ts +4 -0
  70. package/dist/utils/object.d.ts.map +1 -0
  71. package/dist/utils/object.js +17 -0
  72. package/dist/utils/object.js.map +1 -0
  73. package/package.json +10 -2
@@ -1,13 +1,14 @@
1
- import { type QueryOptions } from "@qwen-code/sdk";
2
1
  import { BaseRuntime } from "./types.js";
3
- import type { Record as RuntimeRecord, RecordCallback, Thread, ThreadOptions } from "./types.js";
2
+ import type { RecordCallback, RuntimeOptions, RuntimeRecord, Thread, ThreadOptions } from "./types.js";
4
3
  export declare class QwenRuntime extends BaseRuntime<"qwen"> {
4
+ private readonly options;
5
+ constructor(options?: RuntimeOptions<"qwen">);
5
6
  startThread(options?: ThreadOptions<"qwen">): Promise<Thread<"qwen">>;
6
7
  }
7
8
  export declare class QwenThread implements Thread<"qwen"> {
8
9
  #private;
9
10
  private readonly options;
10
- constructor(options: QueryOptions);
11
+ constructor(options: ThreadOptions<"qwen">);
11
12
  runStreamed(prompt: string, onRecord?: RecordCallback<"qwen">): Promise<string>;
12
13
  recordToPrettyString(record: RuntimeRecord<"qwen">): string;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../src/runtime/qwen.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EACV,MAAM,IAAI,aAAa,EACvB,cAAc,EACd,MAAM,EACN,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,WAAY,SAAQ,WAAW,CAAC,MAAM,CAAC;IAClD,WAAW,CAAC,OAAO,GAAE,aAAa,CAAC,MAAM,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAG1E;AAED,qBAAa,UAAW,YAAW,MAAM,CAAC,MAAM,CAAC;;IAGnC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAE5C,WAAW,CACf,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,cAAc,CAAC,MAAM,CAE9B,GACA,OAAO,CAAC,MAAM,CAAC;IAgClB,oBAAoB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;CAwC5D"}
1
+ {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../src/runtime/qwen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,WAAY,SAAQ,WAAW,CAAC,MAAM,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,cAAc,CAAC,MAAM,CAAM;IAIjE,WAAW,CAAC,OAAO,GAAE,aAAa,CAAC,MAAM,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAG1E;AAED,qBAAa,UAAW,YAAW,MAAM,CAAC,MAAM,CAAC;;IAGnC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;IAErD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCrF,oBAAoB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;CAuC5D"}
@@ -1,8 +1,14 @@
1
1
  import { query } from "@qwen-code/sdk";
2
2
  import { BaseRuntime } from "./types.js";
3
+ import { formatValue, mergePlainObjectOptions } from "./format.js";
3
4
  export class QwenRuntime extends BaseRuntime {
5
+ options;
6
+ constructor(options = {}) {
7
+ super();
8
+ this.options = options;
9
+ }
4
10
  startThread(options = {}) {
5
- return Promise.resolve(new QwenThread(options));
11
+ return Promise.resolve(new QwenThread(mergePlainObjectOptions(this.options, options)));
6
12
  }
7
13
  }
8
14
  export class QwenThread {
@@ -11,9 +17,7 @@ export class QwenThread {
11
17
  constructor(options) {
12
18
  this.options = options;
13
19
  }
14
- async runStreamed(prompt, onRecord = (record) => {
15
- process.stdout.write(`${this.recordToPrettyString(record)}\n`);
16
- }) {
20
+ async runStreamed(prompt, onRecord) {
17
21
  const options = { ...this.options };
18
22
  if (this.#sessionId) {
19
23
  delete options.sessionId;
@@ -28,7 +32,7 @@ export class QwenThread {
28
32
  if ("session_id" in message && typeof message.session_id === "string") {
29
33
  this.#sessionId = message.session_id;
30
34
  }
31
- await onRecord({ runtime: "qwen", message });
35
+ await onRecord?.(this, { runtime: "qwen", message });
32
36
  if (message.type === "result") {
33
37
  if (!message.is_error) {
34
38
  finalResponse = message.result;
@@ -41,9 +45,6 @@ export class QwenThread {
41
45
  return finalResponse;
42
46
  }
43
47
  recordToPrettyString(record) {
44
- const formatValue = (value) => {
45
- return typeof value === "string" ? value : JSON.stringify(value, null, 2);
46
- };
47
48
  const formatContentBlock = (block) => {
48
49
  switch (block.type) {
49
50
  case "text":
@@ -74,6 +75,8 @@ export class QwenThread {
74
75
  return `[qwen] result error (${message.subtype})\n${message.error?.message ?? ""}`;
75
76
  case "stream_event":
76
77
  return `[qwen] stream event ${message.event.type}`;
78
+ default:
79
+ return `[qwen] ${formatValue(message)}`;
77
80
  }
78
81
  }
79
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../src/runtime/qwen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../src/runtime/qwen.ts"],"names":[],"mappings":"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"}
@@ -2,57 +2,67 @@ import type { CodexOptions as CodexSdkRuntimeOptions, Input, ThreadEvent, Thread
2
2
  import type { Options as ClaudeSdkThreadOptions, SDKMessage as ClaudeSDKMessage } from "@anthropic-ai/claude-agent-sdk";
3
3
  import type { QueryOptions as QwenSdkThreadOptions, SDKMessage as QwenSdkMessage } from "@qwen-code/sdk";
4
4
  import type { Event as OpencodeEvent, OpencodeClient, ServerOptions as OpencodeSdkRuntimeOptions } from "@opencode-ai/sdk";
5
- type ClaudeSdkRuntimeOptions = never;
6
- type QwenSdkRuntimeOptions = never;
7
- type OpencodeSdkThreadOptions = Parameters<OpencodeClient["session"]["create"]>[0];
8
- export type RuntimeKind = "codex" | "claude" | "qwen" | "opencode";
9
- export type RuntimeOptions<K extends RuntimeKind = RuntimeKind> = {
10
- codex: CodexSdkRuntimeOptions;
11
- claude: ClaudeSdkRuntimeOptions;
12
- qwen: QwenSdkRuntimeOptions;
13
- opencode: OpencodeSdkRuntimeOptions;
14
- }[K];
15
- export type ThreadOptions<K extends RuntimeKind = RuntimeKind> = {
16
- codex: CodexSdkThreadOptions;
17
- claude: ClaudeSdkThreadOptions;
18
- qwen: QwenSdkThreadOptions;
19
- opencode: OpencodeSdkThreadOptions;
20
- }[K];
21
- export type Record<K extends RuntimeKind = RuntimeKind> = {
5
+ type ClaudeSdkRuntimeOptions = ClaudeSdkThreadOptions;
6
+ type QwenSdkRuntimeOptions = QwenSdkThreadOptions;
7
+ type OpencodeCreateOptions = NonNullable<Parameters<OpencodeClient["session"]["create"]>[0]>;
8
+ type OpencodeSdkThreadOptions = Omit<OpencodeCreateOptions, "throwOnError">;
9
+ export type RuntimeSpec = {
22
10
  codex: {
23
- runtime: "codex";
24
- input: Input;
25
- } | {
26
- runtime: "codex";
27
- event: ThreadEvent;
11
+ runtimeOptions: CodexSdkRuntimeOptions;
12
+ threadOptions: CodexSdkThreadOptions;
13
+ record: {
14
+ runtime: "codex";
15
+ input: Input;
16
+ } | {
17
+ runtime: "codex";
18
+ event: ThreadEvent;
19
+ };
28
20
  };
29
21
  claude: {
30
- runtime: "claude";
31
- message: ClaudeSDKMessage;
22
+ runtimeOptions: ClaudeSdkRuntimeOptions;
23
+ threadOptions: ClaudeSdkThreadOptions;
24
+ record: {
25
+ runtime: "claude";
26
+ message: ClaudeSDKMessage;
27
+ };
32
28
  };
33
29
  qwen: {
34
- runtime: "qwen";
35
- message: QwenSdkMessage;
30
+ runtimeOptions: QwenSdkRuntimeOptions;
31
+ threadOptions: QwenSdkThreadOptions;
32
+ record: {
33
+ runtime: "qwen";
34
+ message: QwenSdkMessage;
35
+ };
36
36
  };
37
37
  opencode: {
38
- runtime: "opencode";
39
- request: string;
40
- } | {
41
- runtime: "opencode";
42
- event: OpencodeEvent;
38
+ runtimeOptions: OpencodeSdkRuntimeOptions;
39
+ threadOptions: OpencodeSdkThreadOptions;
40
+ record: {
41
+ runtime: "opencode";
42
+ request: string;
43
+ } | {
44
+ runtime: "opencode";
45
+ event: OpencodeEvent;
46
+ };
43
47
  };
44
- }[K];
48
+ };
49
+ export type RuntimeKind = keyof RuntimeSpec;
50
+ export declare const runtimeKinds: RuntimeKind[];
51
+ export declare function isRuntimeKind(value: unknown): value is RuntimeKind;
52
+ export type RuntimeOptions<K extends RuntimeKind = RuntimeKind> = RuntimeSpec[K]["runtimeOptions"];
53
+ export type ThreadOptions<K extends RuntimeKind = RuntimeKind> = RuntimeSpec[K]["threadOptions"];
54
+ export type RuntimeRecord<K extends RuntimeKind = RuntimeKind> = RuntimeSpec[K]["record"];
45
55
  export interface Runtime<K extends RuntimeKind = RuntimeKind> {
46
- startThread(options: ThreadOptions<K>): Promise<Thread<K>>;
56
+ startThread(options?: ThreadOptions<K>): Promise<Thread<K>>;
47
57
  close(): Promise<void>;
48
58
  }
49
59
  export declare abstract class BaseRuntime<K extends RuntimeKind = RuntimeKind> implements Runtime<K> {
50
- abstract startThread(options: ThreadOptions<K>): Promise<Thread<K>>;
60
+ abstract startThread(options?: ThreadOptions<K>): Promise<Thread<K>>;
51
61
  close(): Promise<void>;
52
62
  }
53
- export type RecordCallback<K extends RuntimeKind = RuntimeKind> = (record: Record<K>) => void | Promise<void>;
63
+ export type RecordCallback<K extends RuntimeKind = RuntimeKind> = (thread: Thread<K>, record: RuntimeRecord<K>) => void | Promise<void>;
54
64
  export interface Thread<K extends RuntimeKind = RuntimeKind> {
55
- recordToPrettyString(record: Record<K>): string;
65
+ recordToPrettyString(record: RuntimeRecord<K>): string;
56
66
  runStreamed(prompt: string, onRecord?: RecordCallback<K>): Promise<string>;
57
67
  }
58
68
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ const runtimeKindMap = {
2
+ codex: true,
3
+ claude: true,
4
+ qwen: true,
5
+ opencode: true,
6
+ };
7
+ export const runtimeKinds = Object.keys(runtimeKindMap);
8
+ export function isRuntimeKind(value) {
9
+ return typeof value === "string" && Object.hasOwn(runtimeKindMap, value);
10
+ }
1
11
  export class BaseRuntime {
2
12
  close() {
3
13
  return Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAsDA,MAAM,OAAgB,WAAW;IAG/B,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAmDA,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;CACqB,CAAC;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAkB,CAAC;AAEzE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AAWD,MAAM,OAAgB,WAAW;IAG/B,KAAK;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export type PlainObject = Record<string, unknown>;
2
+ export declare function isPlainObject(value: unknown): value is PlainObject;
3
+ export declare function mergePlainObjects(base: PlainObject, override: PlainObject): PlainObject;
4
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,CAUvF"}
@@ -0,0 +1,17 @@
1
+ export function isPlainObject(value) {
2
+ if (typeof value !== "object" || value === null) {
3
+ return false;
4
+ }
5
+ const prototype = Object.getPrototypeOf(value);
6
+ return prototype === Object.prototype || prototype === null;
7
+ }
8
+ export function mergePlainObjects(base, override) {
9
+ const merged = { ...base };
10
+ for (const [key, value] of Object.entries(override)) {
11
+ const existing = merged[key];
12
+ merged[key] =
13
+ isPlainObject(existing) && isPlainObject(value) ? mergePlainObjects(existing, value) : value;
14
+ }
15
+ return merged;
16
+ }
17
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAY,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxD,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAiB,EAAE,QAAqB;IACxE,MAAM,MAAM,GAAgB,EAAE,GAAG,IAAI,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC;YACT,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coding-agent-forge",
3
- "version": "0.1.1",
3
+ "version": "1.0.0",
4
4
  "description": "A small runtime wrapper for Codex, Claude, Qwen Code, and opencode.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,10 +14,18 @@
14
14
  ".": {
15
15
  "types": "./dist/index.d.ts",
16
16
  "import": "./dist/index.js"
17
+ },
18
+ "./runtime": {
19
+ "types": "./dist/runtime/index.d.ts",
20
+ "import": "./dist/runtime/index.js"
21
+ },
22
+ "./agent": {
23
+ "types": "./dist/agent/index.d.ts",
24
+ "import": "./dist/agent/index.js"
17
25
  }
18
26
  },
19
27
  "bin": {
20
- "agent-forge": "dist/cli.js"
28
+ "coding-agent-forge": "dist/cli.js"
21
29
  },
22
30
  "files": [
23
31
  "dist",