@viberlabs/opencode 1.1.0 → 1.1.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @viberlabs/opencode
2
2
 
3
- OpenCode integration for VIBER Universal v2 - HTTP client and agent integration
3
+ OpenCode integration for VIBER Labs / VIBER v2 - HTTP client and agent integration
4
4
 
5
5
  ## Installation
6
6
 
package/package.json CHANGED
@@ -1,10 +1,23 @@
1
1
  {
2
2
  "name": "@viberlabs/opencode",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "OpenCode integration for VIBER Universal",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "exports": "./dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch",
17
+ "clean": "rm -rf dist",
18
+ "typecheck": "tsc --noEmit",
19
+ "test": "vitest run"
20
+ },
8
21
  "keywords": [
9
22
  "viber",
10
23
  "opencode",
@@ -14,20 +27,13 @@
14
27
  "author": "VIBER Universal",
15
28
  "license": "MIT",
16
29
  "dependencies": {
17
- "eventsource": "^3.0.6",
18
- "@viberlabs/viber-core": "2.0.1"
30
+ "@viberlabs/viber-core": "^2.0.1",
31
+ "eventsource": "^3.0.6"
19
32
  },
20
33
  "devDependencies": {
21
34
  "@types/eventsource": "^1.1.15",
22
35
  "@types/node": "^22.13.0",
23
36
  "typescript": "^5.9.3",
24
37
  "vitest": "^3.0.7"
25
- },
26
- "scripts": {
27
- "build": "tsc",
28
- "dev": "tsc --watch",
29
- "clean": "rm -rf dist",
30
- "typecheck": "tsc --noEmit",
31
- "test": "vitest run"
32
38
  }
33
- }
39
+ }
package/LICENSE.md DELETED
@@ -1,25 +0,0 @@
1
- # MIT License
2
-
3
- Copyright (c) 2026 VIBER Universal
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
23
- ---
24
-
25
- Last Updated: 2026-03-06
@@ -1,5 +0,0 @@
1
- /**
2
- * @vitest-environment node
3
- */
4
- export {};
5
- //# sourceMappingURL=client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["client.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,155 +0,0 @@
1
- "use strict";
2
- /**
3
- * @vitest-environment node
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const vitest_1 = require("vitest");
7
- const index_1 = require("../index");
8
- (0, vitest_1.describe)('OpenCodeClient', () => {
9
- (0, vitest_1.describe)('constructor', () => {
10
- (0, vitest_1.it)('should initialize with config', () => {
11
- const client = new index_1.OpenCodeClient({
12
- baseUrl: 'http://localhost:51262',
13
- username: 'test',
14
- password: 'test-password',
15
- });
16
- (0, vitest_1.expect)(client).toBeDefined();
17
- });
18
- (0, vitest_1.it)('should initialize without base URL', () => {
19
- const client = new index_1.OpenCodeClient({
20
- username: 'test',
21
- password: 'test-password',
22
- });
23
- (0, vitest_1.expect)(client).toBeDefined();
24
- });
25
- });
26
- (0, vitest_1.describe)('healthCheck', () => {
27
- (0, vitest_1.it)('should return health status', async () => {
28
- const client = new index_1.OpenCodeClient({
29
- baseUrl: 'http://localhost:51262',
30
- username: 'test',
31
- password: 'test-password',
32
- });
33
- try {
34
- const health = await client.healthCheck();
35
- (0, vitest_1.expect)(health).toHaveProperty('status');
36
- }
37
- catch (error) {
38
- // Expected if no OpenCode server running
39
- (0, vitest_1.expect)(error).toBeDefined();
40
- }
41
- });
42
- });
43
- (0, vitest_1.describe)('createSession', () => {
44
- (0, vitest_1.it)('should create a session with title', async () => {
45
- const client = new index_1.OpenCodeClient({
46
- baseUrl: 'http://localhost:51262',
47
- username: 'test',
48
- password: 'test-password',
49
- });
50
- try {
51
- const sessionId = await client.createSession('Test Session');
52
- (0, vitest_1.expect)(typeof sessionId).toBe('string');
53
- (0, vitest_1.expect)(sessionId).toBeTruthy();
54
- }
55
- catch (error) {
56
- // Expected if no OpenCode server running
57
- (0, vitest_1.expect)(error).toBeDefined();
58
- }
59
- });
60
- });
61
- (0, vitest_1.describe)('sendMessage', () => {
62
- (0, vitest_1.it)('should send message to session', async () => {
63
- const client = new index_1.OpenCodeClient({
64
- baseUrl: 'http://localhost:51262',
65
- username: 'test',
66
- password: 'test-password',
67
- });
68
- try {
69
- const sessionId = await client.createSession('Test');
70
- const response = await client.sendMessage(sessionId, 'Hello, world!', 'qwen/qwen3-coder:480b');
71
- (0, vitest_1.expect)(response).toHaveProperty('messageId');
72
- }
73
- catch (error) {
74
- // Expected if no OpenCode server running
75
- (0, vitest_1.expect)(error).toBeDefined();
76
- }
77
- });
78
- });
79
- (0, vitest_1.describe)('sendMessageAsync', () => {
80
- (0, vitest_1.it)('should send message asynchronously', async () => {
81
- const client = new index_1.OpenCodeClient({
82
- baseUrl: 'http://localhost:51262',
83
- username: 'test',
84
- password: 'test-password',
85
- });
86
- try {
87
- const sessionId = await client.createSession('Test');
88
- await client.sendMessageAsync(sessionId, 'Async message', 'qwen/qwen3-coder:480b');
89
- // Should not throw
90
- (0, vitest_1.expect)(true).toBe(true);
91
- }
92
- catch (error) {
93
- // Expected if no OpenCode server running
94
- (0, vitest_1.expect)(error).toBeDefined();
95
- }
96
- });
97
- });
98
- (0, vitest_1.describe)('getSession', () => {
99
- (0, vitest_1.it)('should retrieve session by ID', async () => {
100
- const client = new index_1.OpenCodeClient({
101
- baseUrl: 'http://localhost:51262',
102
- username: 'test',
103
- password: 'test-password',
104
- });
105
- try {
106
- const sessionId = await client.createSession('Test');
107
- const session = await client.getSession(sessionId);
108
- (0, vitest_1.expect)(session).toHaveProperty('id');
109
- (0, vitest_1.expect)(session).toHaveProperty('title');
110
- }
111
- catch (error) {
112
- // Expected if no OpenCode server running
113
- (0, vitest_1.expect)(error).toBeDefined();
114
- }
115
- });
116
- });
117
- (0, vitest_1.describe)('getMessages', () => {
118
- (0, vitest_1.it)('should retrieve messages for session', async () => {
119
- const client = new index_1.OpenCodeClient({
120
- baseUrl: 'http://localhost:51262',
121
- username: 'test',
122
- password: 'test-password',
123
- });
124
- try {
125
- const sessionId = await client.createSession('Test');
126
- const messages = await client.getMessages(sessionId);
127
- (0, vitest_1.expect)(Array.isArray(messages)).toBe(true);
128
- }
129
- catch (error) {
130
- // Expected if no OpenCode server running
131
- (0, vitest_1.expect)(error).toBeDefined();
132
- }
133
- });
134
- });
135
- (0, vitest_1.describe)('abortSession', () => {
136
- (0, vitest_1.it)('should abort session', async () => {
137
- const client = new index_1.OpenCodeClient({
138
- baseUrl: 'http://localhost:51262',
139
- username: 'test',
140
- password: 'test-password',
141
- });
142
- try {
143
- const sessionId = await client.createSession('Test');
144
- await client.sendMessageAsync(sessionId, 'Long running task', 'qwen/qwen3-coder:480b');
145
- const aborted = await client.abortSession(sessionId);
146
- (0, vitest_1.expect)(typeof aborted).toBe('boolean');
147
- }
148
- catch (error) {
149
- // Expected if no OpenCode server running
150
- (0, vitest_1.expect)(error).toBeDefined();
151
- }
152
- });
153
- });
154
- });
155
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["client.test.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,mCAA8C;AAC9C,oCAA0C;AAE1C,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAA,WAAE,EAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBAC7D,IAAA,eAAM,EAAC,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;gBAE/F,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAA,WAAE,EAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;gBAEnF,mBAAmB;gBACnB,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAA,WAAE,EAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAEnD,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,IAAA,WAAE,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAErD,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,IAAA,WAAE,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,sBAAc,CAAC;gBAChC,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;gBAEvF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAA,eAAM,EAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yCAAyC;gBACzC,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/src/index.d.ts DELETED
@@ -1,56 +0,0 @@
1
- /**
2
- * @viberlabs/opencode
3
- * OpenCode HTTP client and SSE stream for real-time agent progress
4
- */
5
- export declare function discoverOpenCodePort(): Promise<number | null>;
6
- export declare function getOpenCodeBaseUrl(explicitPort?: number): Promise<string>;
7
- export interface OpenCodeConfig {
8
- baseUrl?: string;
9
- port?: number;
10
- username: string;
11
- password?: string;
12
- }
13
- export interface OpenCodeMessage {
14
- messageId: string;
15
- content: string;
16
- }
17
- export interface OpenCodeSession {
18
- id: string;
19
- title: string;
20
- status: string;
21
- createdAt: string;
22
- messageCount?: number;
23
- }
24
- export interface LogEvent {
25
- id: string;
26
- type: "status" | "thought" | "tool_call" | "text" | "error";
27
- content: string;
28
- timestamp: string;
29
- }
30
- export declare class OpenCodeClient {
31
- private config;
32
- constructor(config: OpenCodeConfig);
33
- static create(config?: Partial<OpenCodeConfig>): Promise<OpenCodeClient>;
34
- private getAuthHeader;
35
- healthCheck(): Promise<{
36
- status: string;
37
- version?: string;
38
- }>;
39
- createSession(title: string): Promise<string>;
40
- getSession(sessionId: string): Promise<OpenCodeSession>;
41
- sendMessage(sessionId: string, prompt: string, model?: string): Promise<OpenCodeMessage>;
42
- sendMessageAsync(sessionId: string, prompt: string, model?: string): Promise<void>;
43
- getMessages(sessionId: string): Promise<any[]>;
44
- abortSession(sessionId: string): Promise<void>;
45
- deleteSession(sessionId: string): Promise<void>;
46
- }
47
- export declare class OpenCodeLogStream {
48
- private url;
49
- private authHeader;
50
- private es;
51
- constructor(baseUrl: string, sessionId: string, authHeader: string);
52
- connect(onEvent: (event: LogEvent) => void): Promise<void>;
53
- private mapType;
54
- disconnect(): void;
55
- }
56
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQnE;AAED,wBAAsB,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe/E;AAMD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AA4DD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;WAIrB,MAAM,CAAC,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAKlF,OAAO,CAAC,aAAa;IAKf,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB5D,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB7C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAevD,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAgC,GACtC,OAAO,CAAC,eAAe,CAAC;IAqBrB,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAgC,GACtC,OAAO,CAAC,IAAI,CAAC;IAeV,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAS9C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOtD;AAMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,EAAE,CAA0B;gBAExB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAK5D,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BhE,OAAO,CAAC,OAAO;IAQf,UAAU,IAAI,IAAI;CAMnB"}
package/src/index.js DELETED
@@ -1,322 +0,0 @@
1
- "use strict";
2
- /**
3
- * @viberlabs/opencode
4
- * OpenCode HTTP client and SSE stream for real-time agent progress
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.OpenCodeLogStream = exports.OpenCodeClient = void 0;
41
- exports.discoverOpenCodePort = discoverOpenCodePort;
42
- exports.getOpenCodeBaseUrl = getOpenCodeBaseUrl;
43
- const fs = __importStar(require("fs/promises"));
44
- const path = __importStar(require("path"));
45
- const EventSource = require("eventsource");
46
- // ============================================================================
47
- // Port Discovery
48
- // ============================================================================
49
- const COMMON_PORTS = [51262, 4096, 3000, 8080];
50
- async function testPort(port) {
51
- try {
52
- const controller = new AbortController();
53
- const timeoutId = setTimeout(() => controller.abort(), 2000);
54
- const response = await fetch(`http://127.0.0.1:${port}/global/health`, {
55
- signal: controller.signal,
56
- });
57
- clearTimeout(timeoutId);
58
- // Some OpenCode servers protect /global/health behind Basic Auth.
59
- // Treat 401/403 as a positive signal that a server is present.
60
- if (response.ok)
61
- return true;
62
- if (response.status === 401 || response.status === 403)
63
- return true;
64
- return false;
65
- }
66
- catch {
67
- return false;
68
- }
69
- }
70
- async function discoverOpenCodePort() {
71
- for (const port of COMMON_PORTS) {
72
- if (await testPort(port)) {
73
- console.log(`[OpenCode] Found server on port ${port}`);
74
- return port;
75
- }
76
- }
77
- return null;
78
- }
79
- async function getOpenCodeBaseUrl(explicitPort) {
80
- if (explicitPort) {
81
- return `http://127.0.0.1:${explicitPort}`;
82
- }
83
- const envPort = process.env["OPENCODE_SERVER_PORT"];
84
- if (envPort) {
85
- const port = parseInt(envPort, 10);
86
- if (!isNaN(port))
87
- return `http://127.0.0.1:${port}`;
88
- }
89
- const discovered = await discoverOpenCodePort();
90
- if (discovered)
91
- return `http://127.0.0.1:${discovered}`;
92
- return "http://127.0.0.1:51262";
93
- }
94
- // ============================================================================
95
- // Credentials Resolution
96
- // ============================================================================
97
- function getViberDir() {
98
- return process.env["VIBER_DIR"] || path.join(process.cwd(), ".viber");
99
- }
100
- async function loadCredentialsFromFile() {
101
- try {
102
- const viberDir = getViberDir();
103
- const credsFile = path.join(viberDir, "opencode-auth.json");
104
- const data = await fs.readFile(credsFile, "utf8");
105
- const creds = JSON.parse(data);
106
- if (creds.username && creds.password) {
107
- console.log(`[OpenCode] Loaded credentials from ${credsFile}`);
108
- return creds;
109
- }
110
- }
111
- catch (e) {
112
- console.warn("[OpenCode] Failed to load credentials:", e);
113
- }
114
- return null;
115
- }
116
- async function resolveCredentials(config) {
117
- const fileCreds = await loadCredentialsFromFile();
118
- // Precedence: explicit config > env > creds file.
119
- let username = config.username || process.env["OPENCODE_SERVER_USERNAME"] || fileCreds?.username;
120
- let password = config.password || process.env["OPENCODE_SERVER_PASSWORD"] || fileCreds?.password;
121
- // Port hint can come from creds file even when env provides auth.
122
- const filePort = fileCreds?.port;
123
- if (!username || !password) {
124
- throw new Error("OpenCodeClient: No credentials. Set OPENCODE_SERVER_USERNAME/OPENCODE_SERVER_PASSWORD or create .viber/opencode-auth.json");
125
- }
126
- let baseUrl;
127
- if (config.baseUrl) {
128
- baseUrl = config.baseUrl;
129
- }
130
- else if (config.port) {
131
- baseUrl = `http://127.0.0.1:${config.port}`;
132
- }
133
- else if (typeof filePort === "number") {
134
- baseUrl = `http://127.0.0.1:${filePort}`;
135
- }
136
- else {
137
- baseUrl = await getOpenCodeBaseUrl();
138
- }
139
- return { baseUrl, username, password: password || "" };
140
- }
141
- // ============================================================================
142
- // OpenCode Client
143
- // ============================================================================
144
- class OpenCodeClient {
145
- config;
146
- constructor(config) {
147
- this.config = config;
148
- }
149
- static async create(config = {}) {
150
- const resolved = await resolveCredentials(config);
151
- return new OpenCodeClient(resolved);
152
- }
153
- getAuthHeader() {
154
- const creds = `${this.config.username}:${this.config.password}`;
155
- return `Basic ${Buffer.from(creds).toString("base64")}`;
156
- }
157
- async healthCheck() {
158
- const res = await fetch(`${this.config.baseUrl}/global/health`, {
159
- headers: { Authorization: this.getAuthHeader() },
160
- });
161
- if (!res.ok) {
162
- if (res.status === 401 || res.status === 403) {
163
- throw new Error(`Health check unauthorized (HTTP ${res.status}). ` +
164
- `Check OPENCODE_SERVER_USERNAME/OPENCODE_SERVER_PASSWORD or .viber/opencode-auth.json`);
165
- }
166
- throw new Error(`Health check failed: ${res.status}`);
167
- }
168
- const data = (await res.json());
169
- return { status: data.status || "ok", version: data.version };
170
- }
171
- async createSession(title) {
172
- const res = await fetch(`${this.config.baseUrl}/session`, {
173
- method: "POST",
174
- headers: {
175
- "Content-Type": "application/json",
176
- Authorization: this.getAuthHeader(),
177
- },
178
- body: JSON.stringify({ title }),
179
- });
180
- if (!res.ok) {
181
- if (res.status === 401 || res.status === 403) {
182
- throw new Error(`Create session unauthorized (HTTP ${res.status}). ` +
183
- `Check OPENCODE_SERVER_USERNAME/OPENCODE_SERVER_PASSWORD or .viber/opencode-auth.json`);
184
- }
185
- throw new Error(`Create session failed: ${res.status}`);
186
- }
187
- const data = (await res.json());
188
- return data.id || data.data?.id;
189
- }
190
- async getSession(sessionId) {
191
- const res = await fetch(`${this.config.baseUrl}/session/${sessionId}`, {
192
- headers: { Authorization: this.getAuthHeader() },
193
- });
194
- if (!res.ok)
195
- throw new Error(`Get session failed: ${res.status}`);
196
- const data = (await res.json());
197
- return {
198
- id: data.id || data.data?.id,
199
- title: data.title || data.data?.title || "",
200
- status: data.status || data.data?.status || "unknown",
201
- createdAt: data.createdAt || data.data?.createdAt || new Date().toISOString(),
202
- messageCount: data.messageCount || data.data?.messageCount,
203
- };
204
- }
205
- async sendMessage(sessionId, prompt, model = "qwen/qwen3-coder:480b") {
206
- const res = await fetch(`${this.config.baseUrl}/session/${sessionId}/message`, {
207
- method: "POST",
208
- headers: {
209
- "Content-Type": "application/json",
210
- Authorization: this.getAuthHeader(),
211
- },
212
- body: JSON.stringify({
213
- parts: [{ type: "text", text: prompt }],
214
- model: { providerID: "openrouter", modelID: model },
215
- agent: "build",
216
- }),
217
- });
218
- if (!res.ok)
219
- throw new Error(`Message send failed: ${res.status}`);
220
- const data = (await res.json());
221
- return {
222
- messageId: data.id || data.messageId,
223
- content: data.content || data.text || "",
224
- };
225
- }
226
- async sendMessageAsync(sessionId, prompt, model = "qwen/qwen3-coder:480b") {
227
- fetch(`${this.config.baseUrl}/session/${sessionId}/message`, {
228
- method: "POST",
229
- headers: {
230
- "Content-Type": "application/json",
231
- Authorization: this.getAuthHeader(),
232
- },
233
- body: JSON.stringify({
234
- parts: [{ type: "text", text: prompt }],
235
- model: { providerID: "openrouter", modelID: model },
236
- agent: "build",
237
- }),
238
- }).catch((e) => console.error("[OpenCode] Async message failed", e));
239
- }
240
- async getMessages(sessionId) {
241
- const res = await fetch(`${this.config.baseUrl}/session/${sessionId}/messages`, {
242
- headers: { Authorization: this.getAuthHeader() },
243
- });
244
- if (!res.ok)
245
- throw new Error(`Get messages failed: ${res.status}`);
246
- const data = (await res.json());
247
- return data.messages || data.data || [];
248
- }
249
- async abortSession(sessionId) {
250
- const res = await fetch(`${this.config.baseUrl}/session/${sessionId}/abort`, {
251
- method: "POST",
252
- headers: { Authorization: this.getAuthHeader() },
253
- });
254
- if (!res.ok)
255
- throw new Error(`Abort session failed: ${res.status}`);
256
- }
257
- async deleteSession(sessionId) {
258
- const res = await fetch(`${this.config.baseUrl}/session/${sessionId}`, {
259
- method: "DELETE",
260
- headers: { Authorization: this.getAuthHeader() },
261
- });
262
- if (!res.ok)
263
- throw new Error(`Delete session failed: ${res.status}`);
264
- }
265
- }
266
- exports.OpenCodeClient = OpenCodeClient;
267
- // ============================================================================
268
- // SSE Stream
269
- // ============================================================================
270
- class OpenCodeLogStream {
271
- url;
272
- authHeader;
273
- es;
274
- constructor(baseUrl, sessionId, authHeader) {
275
- this.url = `${baseUrl}/session/${sessionId}/stream`;
276
- this.authHeader = authHeader;
277
- }
278
- async connect(onEvent) {
279
- const es = new EventSource(this.url, {
280
- headers: { Authorization: this.authHeader },
281
- });
282
- es.onmessage = (e) => {
283
- try {
284
- const data = JSON.parse(e.data);
285
- const log = {
286
- id: data.id || Math.random().toString(36).substring(2, 11),
287
- type: this.mapType(data),
288
- content: data.text || data.content || JSON.stringify(data),
289
- timestamp: new Date().toISOString(),
290
- };
291
- onEvent(log);
292
- }
293
- catch (err) {
294
- console.error("[SSE] Parse error:", err);
295
- }
296
- };
297
- es.onerror = () => {
298
- console.error("[SSE] Stream error");
299
- this.disconnect();
300
- };
301
- this.es = es;
302
- }
303
- mapType(data) {
304
- if (data.type === "thought")
305
- return "thought";
306
- if (data.tool_call || data.type === "tool_call")
307
- return "tool_call";
308
- if (data.type === "error")
309
- return "error";
310
- if (data.type === "status")
311
- return "status";
312
- return "text";
313
- }
314
- disconnect() {
315
- if (this.es) {
316
- this.es.close();
317
- this.es = undefined;
318
- }
319
- }
320
- }
321
- exports.OpenCodeLogStream = OpenCodeLogStream;
322
- //# sourceMappingURL=index.js.map
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @viberlabs/opencode/integration
3
- * Deep OpenCode integration for VIBER
4
- */
5
- export {};
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- /**
3
- * @viberlabs/opencode/integration
4
- * Deep OpenCode integration for VIBER
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;GAGG"}