@supen-ai/cli 0.1.9 → 0.1.11

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 (74) hide show
  1. package/README.md +9 -7
  2. package/daemon/dist/agent-sdk/driver-output-ui.js +1 -1
  3. package/daemon/dist/agent-sdk/drivers/acpx-driver.js +1 -1
  4. package/daemon/dist/agent-sdk/drivers/acpx-driver.js.map +1 -1
  5. package/daemon/dist/agent-sdk/drivers/registry.js +1 -1
  6. package/daemon/dist/agent-sdk/drivers/registry.js.map +1 -1
  7. package/daemon/dist/channels/http-routes.js +59 -59
  8. package/daemon/dist/channels/http-routes.js.map +1 -1
  9. package/daemon/dist/channels/http.js +1 -1
  10. package/daemon/dist/channels/http.js.map +1 -1
  11. package/daemon/dist/core/config.js +1 -1
  12. package/daemon/dist/core/config.js.map +1 -1
  13. package/daemon/dist/core/control-commands.js +1 -1
  14. package/daemon/dist/core/cortex.js +4 -4
  15. package/daemon/dist/core/gateway-config.d.ts +1 -1
  16. package/daemon/dist/core/gateway-config.d.ts.map +1 -1
  17. package/daemon/dist/core/gateway-config.js +1 -1
  18. package/daemon/dist/core/gateway-config.js.map +1 -1
  19. package/daemon/dist/core/gateway.d.ts.map +1 -1
  20. package/daemon/dist/core/gateway.js +8 -34
  21. package/daemon/dist/core/gateway.js.map +1 -1
  22. package/daemon/dist/core/os-info.d.ts +65 -0
  23. package/daemon/dist/core/os-info.d.ts.map +1 -0
  24. package/daemon/dist/core/os-info.js +225 -0
  25. package/daemon/dist/core/os-info.js.map +1 -0
  26. package/daemon/dist/core/protocol-adapter.js +2 -2
  27. package/daemon/dist/core/thread-runtime-state.js +1 -1
  28. package/daemon/dist/http/context.js +2 -2
  29. package/daemon/dist/http/context.js.map +1 -1
  30. package/daemon/dist/http/router.d.ts.map +1 -1
  31. package/daemon/dist/http/router.js +4 -4
  32. package/daemon/dist/http/router.js.map +1 -1
  33. package/daemon/dist/http/routes/agents.d.ts.map +1 -1
  34. package/daemon/dist/http/routes/agents.js +13 -16
  35. package/daemon/dist/http/routes/agents.js.map +1 -1
  36. package/daemon/dist/http/routes/automations.d.ts.map +1 -1
  37. package/daemon/dist/http/routes/automations.js +27 -13
  38. package/daemon/dist/http/routes/automations.js.map +1 -1
  39. package/daemon/dist/http/routes/autonomy.js +4 -4
  40. package/daemon/dist/http/routes/autonomy.js.map +1 -1
  41. package/daemon/dist/http/routes/chat-input.d.ts +0 -1
  42. package/daemon/dist/http/routes/chat-input.d.ts.map +1 -1
  43. package/daemon/dist/http/routes/chat-input.js +0 -1
  44. package/daemon/dist/http/routes/chat-input.js.map +1 -1
  45. package/daemon/dist/http/routes/plugins.js +6 -6
  46. package/daemon/dist/http/routes/plugins.js.map +1 -1
  47. package/daemon/dist/http/routes/rpc.d.ts.map +1 -1
  48. package/daemon/dist/http/routes/rpc.js +43 -10
  49. package/daemon/dist/http/routes/rpc.js.map +1 -1
  50. package/daemon/dist/http/routes/sessions.js +15 -15
  51. package/daemon/dist/http/routes/sessions.js.map +1 -1
  52. package/daemon/dist/http/routes/skills.js +11 -11
  53. package/daemon/dist/http/routes/skills.js.map +1 -1
  54. package/daemon/dist/http/routes/system.d.ts +1 -0
  55. package/daemon/dist/http/routes/system.d.ts.map +1 -1
  56. package/daemon/dist/http/routes/system.js +316 -82
  57. package/daemon/dist/http/routes/system.js.map +1 -1
  58. package/daemon/dist/index.js +1 -1
  59. package/daemon/scripts/supen-daemon.js +1 -1
  60. package/dist/auth/login.js +1 -1
  61. package/dist/auth/login.js.map +1 -1
  62. package/dist/bootstrap.d.ts +1 -0
  63. package/dist/bootstrap.js +5 -4
  64. package/dist/bootstrap.js.map +1 -1
  65. package/dist/computer.js +25 -4
  66. package/dist/computer.js.map +1 -1
  67. package/dist/daemon-manage.js +9 -2
  68. package/dist/daemon-manage.js.map +1 -1
  69. package/dist/index.js +2 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/os-identity.d.ts +6 -0
  72. package/dist/os-identity.js +68 -0
  73. package/dist/os-identity.js.map +1 -0
  74. package/package.json +2 -2
@@ -0,0 +1,65 @@
1
+ export type OsReleaseInfo = {
2
+ id?: string;
3
+ id_like?: string;
4
+ name?: string;
5
+ version_id?: string;
6
+ };
7
+ export type OsIdentity = {
8
+ distro_id?: string;
9
+ distro_name?: string;
10
+ };
11
+ export type DarwinVmStat = {
12
+ page_size: number;
13
+ pages_free: number;
14
+ pages_active: number;
15
+ pages_inactive: number;
16
+ pages_speculative: number;
17
+ pages_wired: number;
18
+ pages_compressed: number;
19
+ pageouts: number;
20
+ available_bytes: number;
21
+ };
22
+ export type DarwinMemoryPressure = {
23
+ free_percent?: number;
24
+ };
25
+ export type MemoryTelemetry = {
26
+ mem_total: number;
27
+ mem_free: number;
28
+ mem_used: number;
29
+ mem_os_free: number;
30
+ mem_available?: number;
31
+ mem_pressure_free_pct?: number;
32
+ mem_pressure_used_pct?: number;
33
+ mem_pageouts?: number;
34
+ };
35
+ export declare function parseOsRelease(content: string): OsReleaseInfo;
36
+ export declare function readOsRelease(): OsReleaseInfo;
37
+ export declare function resolveOsIdentityFromRelease(platform: string, release: OsReleaseInfo): OsIdentity;
38
+ export declare function resolveOsIdentity(platform?: string): OsIdentity;
39
+ export declare function parseDarwinVmStat(content: string): DarwinVmStat | null;
40
+ export declare function parseDarwinMemoryPressure(content: string): DarwinMemoryPressure;
41
+ export declare function buildDarwinMemoryTelemetry(memTotal: number, memOsFree: number, pressure: DarwinMemoryPressure, vmStat: DarwinVmStat | null): MemoryTelemetry;
42
+ export declare function collectMemoryTelemetry(platform?: string, memTotal?: number, memOsFree?: number): MemoryTelemetry;
43
+ export declare function collectOsTelemetryFields(): {
44
+ uptime: number;
45
+ disk_total: number;
46
+ disk_free: number;
47
+ disk_used: number;
48
+ mem_total: number;
49
+ mem_free: number;
50
+ mem_used: number;
51
+ mem_os_free: number;
52
+ mem_available?: number;
53
+ mem_pressure_free_pct?: number;
54
+ mem_pressure_used_pct?: number;
55
+ mem_pageouts?: number;
56
+ cpus: number;
57
+ cpu_model: string;
58
+ load_avg: number[];
59
+ distro_id?: string;
60
+ distro_name?: string;
61
+ hostname: string;
62
+ platform: NodeJS.Platform;
63
+ arch: string;
64
+ };
65
+ //# sourceMappingURL=os-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os-info.d.ts","sourceRoot":"","sources":["../../src/core/os-info.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAkB7D;AAED,wBAAgB,aAAa,IAAI,aAAa,CAqB7C;AAqBD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,UAAU,CAqBjG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAsB,GAAG,UAAU,CAQ9E;AAOD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA2BtE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAK/E;AAgBD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,eAAe,CAuBjB;AAQD,wBAAgB,sBAAsB,CACpC,QAAQ,GAAE,MAAsB,EAChC,QAAQ,GAAE,MAAsB,EAChC,SAAS,GAAE,MAAqB,GAC/B,eAAe,CAUjB;AAED,wBAAgB,wBAAwB;;;;;eApN3B,MAAM;cACP,MAAM;cACN,MAAM;iBACH,MAAM;oBACH,MAAM;4BACE,MAAM;4BACN,MAAM;mBACf,MAAM;;;;gBA5BT,MAAM;kBACJ,MAAM;;;;EAwQrB"}
@@ -0,0 +1,225 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import { spawnSync } from 'child_process';
4
+ import { SUPEN_HOME } from './config.js';
5
+ export function parseOsRelease(content) {
6
+ const info = {};
7
+ for (const line of content.split('\n')) {
8
+ const trimmed = line.trim();
9
+ if (!trimmed || trimmed.startsWith('#'))
10
+ continue;
11
+ const separator = trimmed.indexOf('=');
12
+ if (separator <= 0)
13
+ continue;
14
+ const key = trimmed.slice(0, separator).trim().toLowerCase();
15
+ let value = trimmed.slice(separator + 1).trim();
16
+ if (value.startsWith('"') && value.endsWith('"')) {
17
+ value = value.slice(1, -1);
18
+ }
19
+ if (key === 'id')
20
+ info.id = value.toLowerCase();
21
+ if (key === 'id_like')
22
+ info.id_like = value.toLowerCase();
23
+ if (key === 'name')
24
+ info.name = value;
25
+ if (key === 'version_id')
26
+ info.version_id = value;
27
+ }
28
+ return info;
29
+ }
30
+ export function readOsRelease() {
31
+ const fromEnv = readOsIdentityFromEnv();
32
+ if (fromEnv.id || fromEnv.name) {
33
+ return fromEnv;
34
+ }
35
+ for (const filePath of [
36
+ '/etc/host-os-release',
37
+ '/etc/os-release',
38
+ '/usr/lib/os-release',
39
+ ]) {
40
+ try {
41
+ const parsed = parseOsRelease(fs.readFileSync(filePath, 'utf8'));
42
+ if (parsed.id || parsed.name || parsed.id_like) {
43
+ return parsed;
44
+ }
45
+ }
46
+ catch {
47
+ // try next path
48
+ }
49
+ }
50
+ return {};
51
+ }
52
+ function readOsIdentityFromEnv() {
53
+ const id = process.env.SUPEN_OS_DISTRO_ID?.trim().toLowerCase();
54
+ const name = process.env.SUPEN_OS_DISTRO_NAME?.trim();
55
+ if (!id && !name)
56
+ return {};
57
+ return {
58
+ ...(id ? { id } : {}),
59
+ ...(name ? { name } : {}),
60
+ };
61
+ }
62
+ function distroFromIdLike(idLike) {
63
+ if (!idLike)
64
+ return undefined;
65
+ const tokens = idLike.split(/\s+/).filter(Boolean);
66
+ for (const preferred of ['ubuntu', 'debian', 'rhel', 'fedora', 'centos', 'arch', 'suse']) {
67
+ if (tokens.includes(preferred))
68
+ return preferred;
69
+ }
70
+ return tokens[0];
71
+ }
72
+ export function resolveOsIdentityFromRelease(platform, release) {
73
+ if (platform === 'darwin') {
74
+ return { distro_id: 'macos', distro_name: 'macOS' };
75
+ }
76
+ if (platform === 'win32') {
77
+ return { distro_id: 'windows', distro_name: 'Windows' };
78
+ }
79
+ if (platform !== 'linux') {
80
+ return { distro_id: platform, distro_name: platform };
81
+ }
82
+ const distroId = release.id || distroFromIdLike(release.id_like) || 'linux';
83
+ const distroName = release.name
84
+ ? release.version_id
85
+ ? `${release.name} ${release.version_id}`.trim()
86
+ : release.name
87
+ : distroId;
88
+ return {
89
+ distro_id: distroId,
90
+ distro_name: distroName,
91
+ };
92
+ }
93
+ export function resolveOsIdentity(platform = os.platform()) {
94
+ if (platform === 'darwin' || platform === 'win32') {
95
+ return resolveOsIdentityFromRelease(platform, {});
96
+ }
97
+ if (platform !== 'linux') {
98
+ return resolveOsIdentityFromRelease(platform, {});
99
+ }
100
+ return resolveOsIdentityFromRelease(platform, readOsRelease());
101
+ }
102
+ function parseVmStatNumber(value) {
103
+ const numeric = Number.parseInt(value.replace(/\./g, '').trim(), 10);
104
+ return Number.isFinite(numeric) ? numeric : 0;
105
+ }
106
+ export function parseDarwinVmStat(content) {
107
+ const pageSizeMatch = content.match(/page size of\s+(\d+)\s+bytes/i);
108
+ const pageSize = pageSizeMatch ? Number.parseInt(pageSizeMatch[1], 10) : 4096;
109
+ if (!Number.isFinite(pageSize) || pageSize <= 0)
110
+ return null;
111
+ const fields = new Map();
112
+ for (const line of content.split('\n')) {
113
+ const match = line.match(/^([^:]+):\s+([0-9.]+)/);
114
+ if (!match)
115
+ continue;
116
+ fields.set(match[1].trim().toLowerCase(), parseVmStatNumber(match[2]));
117
+ }
118
+ const pagesFree = fields.get('pages free') ?? 0;
119
+ const pagesInactive = fields.get('pages inactive') ?? 0;
120
+ const pagesSpeculative = fields.get('pages speculative') ?? 0;
121
+ return {
122
+ page_size: pageSize,
123
+ pages_free: pagesFree,
124
+ pages_active: fields.get('pages active') ?? 0,
125
+ pages_inactive: pagesInactive,
126
+ pages_speculative: pagesSpeculative,
127
+ pages_wired: fields.get('pages wired down') ?? fields.get('pages wired') ?? 0,
128
+ pages_compressed: fields.get('pages occupied by compressor') ?? 0,
129
+ pageouts: fields.get('pageouts') ?? 0,
130
+ available_bytes: (pagesFree + pagesInactive + pagesSpeculative) * pageSize,
131
+ };
132
+ }
133
+ export function parseDarwinMemoryPressure(content) {
134
+ const match = content.match(/System-wide memory free percentage:\s*(\d+(?:\.\d+)?)%/i);
135
+ if (!match)
136
+ return {};
137
+ const freePercent = Number.parseFloat(match[1]);
138
+ return Number.isFinite(freePercent) ? { free_percent: freePercent } : {};
139
+ }
140
+ function runCommandOutput(command, args) {
141
+ try {
142
+ const result = spawnSync(command, args, {
143
+ encoding: 'utf8',
144
+ timeout: 1000,
145
+ maxBuffer: 1024 * 1024,
146
+ });
147
+ if (result.status !== 0)
148
+ return null;
149
+ return result.stdout || null;
150
+ }
151
+ catch {
152
+ return null;
153
+ }
154
+ }
155
+ export function buildDarwinMemoryTelemetry(memTotal, memOsFree, pressure, vmStat) {
156
+ const pressureFree = pressure.free_percent !== undefined
157
+ ? Math.max(0, Math.min(memTotal, Math.round(memTotal * (pressure.free_percent / 100))))
158
+ : undefined;
159
+ const vmAvailable = vmStat ? Math.max(0, Math.min(memTotal, vmStat.available_bytes)) : undefined;
160
+ const memFree = pressureFree ?? vmAvailable ?? memOsFree;
161
+ const memUsed = Math.max(0, memTotal - memFree);
162
+ return {
163
+ mem_total: memTotal,
164
+ mem_free: memFree,
165
+ mem_used: memUsed,
166
+ mem_os_free: memOsFree,
167
+ ...(vmAvailable !== undefined ? { mem_available: vmAvailable } : {}),
168
+ ...(pressure.free_percent !== undefined
169
+ ? {
170
+ mem_pressure_free_pct: pressure.free_percent,
171
+ mem_pressure_used_pct: Math.max(0, Math.min(100, 100 - pressure.free_percent)),
172
+ }
173
+ : {}),
174
+ ...(vmStat ? { mem_pageouts: vmStat.pageouts } : {}),
175
+ };
176
+ }
177
+ function collectDarwinMemoryTelemetry(memTotal, memOsFree) {
178
+ const pressure = parseDarwinMemoryPressure(runCommandOutput('memory_pressure', []) ?? '');
179
+ const vmStat = parseDarwinVmStat(runCommandOutput('vm_stat', []) ?? '');
180
+ return buildDarwinMemoryTelemetry(memTotal, memOsFree, pressure, vmStat);
181
+ }
182
+ export function collectMemoryTelemetry(platform = os.platform(), memTotal = os.totalmem(), memOsFree = os.freemem()) {
183
+ if (platform === 'darwin') {
184
+ return collectDarwinMemoryTelemetry(memTotal, memOsFree);
185
+ }
186
+ return {
187
+ mem_total: memTotal,
188
+ mem_free: memOsFree,
189
+ mem_used: Math.max(0, memTotal - memOsFree),
190
+ mem_os_free: memOsFree,
191
+ };
192
+ }
193
+ export function collectOsTelemetryFields() {
194
+ const cpus = os.cpus();
195
+ const memTotal = os.totalmem();
196
+ const memory = collectMemoryTelemetry(os.platform(), memTotal, os.freemem());
197
+ const identity = resolveOsIdentity();
198
+ let disk_total;
199
+ let disk_free;
200
+ let disk_used;
201
+ try {
202
+ const stats = fs.statfsSync(SUPEN_HOME);
203
+ disk_total = stats.bsize * stats.blocks;
204
+ disk_free = stats.bsize * stats.bavail;
205
+ disk_used = disk_total - disk_free;
206
+ }
207
+ catch {
208
+ // ignore missing disk stats
209
+ }
210
+ return {
211
+ hostname: os.hostname(),
212
+ platform: os.platform(),
213
+ arch: os.arch(),
214
+ ...identity,
215
+ cpus: cpus.length,
216
+ cpu_model: cpus[0]?.model || 'Unknown',
217
+ load_avg: os.loadavg(),
218
+ ...memory,
219
+ uptime: os.uptime(),
220
+ disk_total,
221
+ disk_free,
222
+ disk_used,
223
+ };
224
+ }
225
+ //# sourceMappingURL=os-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os-info.js","sourceRoot":"","sources":["../../src/core/os-info.ts"],"names":[],"mappings":"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"}
@@ -262,7 +262,7 @@ function approvalDeniedChunks(event) {
262
262
  }
263
263
  function toSupenEventChunk(event) {
264
264
  return {
265
- type: 'data-supen-event',
265
+ type: 'data-codex-event',
266
266
  data: {
267
267
  eventType: typeof event?.type === 'string'
268
268
  ? event.type
@@ -360,7 +360,7 @@ export function convertSdkEventToUiMessageChunks(event, textId = '1') {
360
360
  }
361
361
  else {
362
362
  resultChunks.push({
363
- type: 'data-supen-event',
363
+ type: 'data-codex-event',
364
364
  data: {
365
365
  eventType: 'assistant-block',
366
366
  blockType: block?.type ?? 'unknown',
@@ -123,7 +123,7 @@ function canonicalUiChunkForEvent(event) {
123
123
  return event.raw_payload;
124
124
  }
125
125
  return {
126
- type: 'data-supen-event',
126
+ type: 'data-codex-event',
127
127
  data: {
128
128
  eventType: event.event_type,
129
129
  raw: event.raw_payload,
@@ -103,10 +103,10 @@ export function deriveHttpSenderIdentity(context) {
103
103
  }
104
104
  export function requiresAdminApiAccess(pathname, method) {
105
105
  if ((method === 'GET' || method === 'HEAD') &&
106
- /^\/api\/computer\/agents\/[^/]+\/artifacts\/preview-file$/.test(pathname)) {
106
+ /^\/api\/computers\/\{computer_id\}\/agents\/[^/]+\/artifacts\/preview-file$/.test(pathname)) {
107
107
  return false;
108
108
  }
109
- if (pathname.startsWith('/api/computer/')) {
109
+ if (pathname.startsWith('/api/computers/{computer_id}/')) {
110
110
  if (method === 'OPTIONS')
111
111
  return false;
112
112
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/http/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/http/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAWxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA2BtD,wBAAsB,eAAe,CACnC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,EAC9C,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiCf"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAWxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA2BtD,wBAAsB,eAAe,CACnC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,EAC9C,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -9,14 +9,14 @@ import { handleAutonomyRoutes } from './routes/autonomy.js';
9
9
  import { handleRpcRoutes } from './routes/rpc.js';
10
10
  import { requireHttpAdminContext, requiresAdminApiAccess } from './context.js';
11
11
  import { writeProtocolError } from './response.js';
12
- function rewriteCanonicalComputerPath(req, pathname) {
12
+ function normalizeComputerPathTemplate(req, pathname) {
13
13
  const canonicalMatch = pathname.match(/^\/api\/computers\/([^/]+)(\/.*)?$/);
14
14
  if (!canonicalMatch) {
15
15
  return pathname;
16
16
  }
17
17
  const encodedComputerId = canonicalMatch[1] || '';
18
18
  const tail = canonicalMatch[2] || '';
19
- const rewritten = `/api/computer${tail || ''}` || '/api/computer';
19
+ const rewritten = `/api/computers/{computer_id}${tail || ''}` || '/api/computers/{computer_id}';
20
20
  try {
21
21
  const decoded = decodeURIComponent(encodedComputerId);
22
22
  if (decoded) {
@@ -27,13 +27,13 @@ function rewriteCanonicalComputerPath(req, pathname) {
27
27
  catch {
28
28
  req.headers['x-computer-id'] = encodedComputerId;
29
29
  }
30
- return rewritten === '/api/computer/' ? '/api/computer' : rewritten;
30
+ return rewritten === '/api/computers/{computer_id}/' ? '/api/computers/{computer_id}' : rewritten;
31
31
  }
32
32
  export async function dispatchRequest(req, res, onMessage, onSessionStop) {
33
33
  const url = new URL(req.url ?? '/', `http://localhost`);
34
34
  const requestedPathname = url.pathname;
35
35
  const method = req.method || 'GET';
36
- const pathname = rewriteCanonicalComputerPath(req, requestedPathname);
36
+ const pathname = normalizeComputerPathTemplate(req, requestedPathname);
37
37
  const adminGuardRequired = requiresAdminApiAccess(pathname, method);
38
38
  const adminContext = adminGuardRequired ? requireHttpAdminContext(req, res) : null;
39
39
  if (adminGuardRequired && !adminContext)
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/http/routes/agents.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA6H1B,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA6xBlB"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/http/routes/agents.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA6H1B,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA0xBlB"}
@@ -97,7 +97,7 @@ function buildRequestAbsoluteUrl(req, localPath) {
97
97
  return `${proto}://${host}${localPath}`;
98
98
  }
99
99
  export async function handleAgentsRoutes(req, res, url, pathname, method) {
100
- const previewSessionMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/artifacts\/preview-session$/);
100
+ const previewSessionMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/artifacts\/preview-session$/);
101
101
  if (previewSessionMatch && method === 'POST') {
102
102
  const agentId = decodeURIComponent(previewSessionMatch[1]);
103
103
  const body = await readJsonBody(req);
@@ -158,7 +158,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
158
158
  }
159
159
  return true;
160
160
  }
161
- const previewFileMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/artifacts\/preview-file$/);
161
+ const previewFileMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/artifacts\/preview-file$/);
162
162
  if (previewFileMatch && (method === 'GET' || method === 'HEAD')) {
163
163
  const token = url.searchParams.get('token') || '';
164
164
  const resolved = resolvePreviewToken(token);
@@ -185,12 +185,12 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
185
185
  return true;
186
186
  }
187
187
  // ── Agents: List/Create ──
188
- if (pathname === '/api/computer/agents' && method === 'GET') {
188
+ if (pathname === '/api/computers/{computer_id}/agents' && method === 'GET') {
189
189
  const agents = getAllAgents();
190
190
  writeJson(res, 200, { agents });
191
191
  return true;
192
192
  }
193
- if (pathname === '/api/computer/agents' && method === 'POST') {
193
+ if (pathname === '/api/computers/{computer_id}/agents' && method === 'POST') {
194
194
  const body = await readJsonBody(req);
195
195
  const payload = (body && typeof body === 'object' && !Array.isArray(body) ? body : {});
196
196
  const requestedId = typeof payload.agent_id === 'string'
@@ -253,7 +253,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
253
253
  return true;
254
254
  }
255
255
  // ── Agents: Single Agent Operations ──
256
- const agentMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)$/);
256
+ const agentMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)$/);
257
257
  if (agentMatch) {
258
258
  const agentId = decodeURIComponent(agentMatch[1]);
259
259
  if (method === 'GET') {
@@ -326,7 +326,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
326
326
  }
327
327
  }
328
328
  // ── Agent Skills Assignment ──
329
- const agentSkillsMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/skills$/);
329
+ const agentSkillsMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/skills$/);
330
330
  if (agentSkillsMatch && method === 'POST') {
331
331
  const agentId = decodeURIComponent(agentSkillsMatch[1]);
332
332
  const existingAgent = getAgent(agentId);
@@ -361,7 +361,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
361
361
  writeJson(res, 200, { ok: true, agent: updatedAgent });
362
362
  return true;
363
363
  }
364
- const knowledgeRootsMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/workspace\/knowledge-roots$/);
364
+ const knowledgeRootsMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/workspace\/knowledge-roots$/);
365
365
  if (knowledgeRootsMatch && method === 'GET') {
366
366
  const agentId = decodeURIComponent(knowledgeRootsMatch[1]);
367
367
  const space = spacePaths(agentSpaceId(agentId));
@@ -378,7 +378,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
378
378
  return true;
379
379
  }
380
380
  // ── Workspace file access ──
381
- const workspaceV1Match = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/workspace(?:\/(.*))?$/);
381
+ const workspaceV1Match = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/workspace(?:\/(.*))?$/);
382
382
  if (workspaceV1Match && (method === 'GET' || method === 'HEAD' || method === 'PATCH' || method === 'DELETE')) {
383
383
  const agentId = decodeURIComponent(workspaceV1Match[1]);
384
384
  const relRaw = workspaceV1Match[2] ?? '.';
@@ -510,7 +510,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
510
510
  return true;
511
511
  }
512
512
  // ── Workspace file upload ──
513
- const uploadV1Match = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/workspace\/upload$/);
513
+ const uploadV1Match = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/workspace\/upload$/);
514
514
  if (uploadV1Match && method === 'POST') {
515
515
  const agentId = decodeURIComponent(uploadV1Match[1]);
516
516
  const reqBody = await readJsonBody(req);
@@ -556,9 +556,6 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
556
556
  uploadedFiles.push({
557
557
  name: originalName,
558
558
  path: supenPath,
559
- supenUrl: rootCategory === 'knowledge'
560
- ? `supen://workspace/${agentId}/${supenPath.replace(/\\/g, '/')}`
561
- : `supen://workspace/${agentId}/${rootCategory}/${supenPath.replace(/\\/g, '/')}`,
562
559
  size: content.length,
563
560
  });
564
561
  logger.info({ agentId, root: rootCategory, destName, targetPath }, 'File uploaded to workspace');
@@ -567,7 +564,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
567
564
  return true;
568
565
  }
569
566
  // ── Mind Files ──
570
- const mindFilesMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/mind$/);
567
+ const mindFilesMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/mind$/);
571
568
  if (mindFilesMatch && method === 'GET') {
572
569
  const agentId = decodeURIComponent(mindFilesMatch[1]);
573
570
  const baseDir = getAgentBaseDir(agentId);
@@ -590,7 +587,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
590
587
  return true;
591
588
  }
592
589
  // ── Memory Roll ──
593
- const memoryMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/memory$/);
590
+ const memoryMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/memory$/);
594
591
  if (memoryMatch && method === 'GET') {
595
592
  const agentId = decodeURIComponent(memoryMatch[1]);
596
593
  const baseDir = getAgentBaseDir(agentId);
@@ -624,7 +621,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
624
621
  writeJson(res, 200, { core_memory: coreMemory, roll });
625
622
  return true;
626
623
  }
627
- const memoryEntryMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/memory\/([^/]+)$/);
624
+ const memoryEntryMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/memory\/([^/]+)$/);
628
625
  if (memoryEntryMatch && method === 'PUT') {
629
626
  const agentId = decodeURIComponent(memoryEntryMatch[1]);
630
627
  const entryId = assertSafePathSegment(decodeURIComponent(memoryEntryMatch[2]), 'memory_id');
@@ -659,7 +656,7 @@ export async function handleAgentsRoutes(req, res, url, pathname, method) {
659
656
  return true;
660
657
  }
661
658
  // ── Artifacts ──
662
- const artifactsMatch = pathname.match(/^\/api\/computer\/agents\/([^/]+)\/artifacts$/);
659
+ const artifactsMatch = pathname.match(/^\/api\/computers\/\{computer_id\}\/agents\/([^/]+)\/artifacts$/);
663
660
  if (artifactsMatch && method === 'GET') {
664
661
  const agentId = decodeURIComponent(artifactsMatch[1]);
665
662
  const baseDir = getAgentBaseDir(agentId);