hive-am 1.2.0 → 1.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/CHANGELOG.md +18 -1
- package/package.json +1 -1
- package/server/dist/http/routes/agents.js +21 -0
- package/server/dist/providers/opencode-server.js +45 -0
- package/server/dist/providers/opencode.js +50 -4
- package/server/dist/terminals.js +10 -2
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-build-manifest.json +56 -56
- package/web/.next/app-path-routes-manifest.json +6 -6
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +55 -55
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/server/app/_not-found.rsc +3 -3
- package/web/.next/server/app/agents/[id]/page.js +1 -1
- package/web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/agents.html +1 -1
- package/web/.next/server/app/agents.rsc +4 -4
- package/web/.next/server/app/connections/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/connections.html +1 -1
- package/web/.next/server/app/connections.rsc +4 -4
- package/web/.next/server/app/index.html +1 -1
- package/web/.next/server/app/index.rsc +4 -4
- package/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/relations/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/relations.html +1 -1
- package/web/.next/server/app/relations.rsc +4 -4
- package/web/.next/server/app/resources/[id]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/resources/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/resources.html +1 -1
- package/web/.next/server/app/resources.rsc +4 -4
- package/web/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/schedules.html +1 -1
- package/web/.next/server/app/schedules.rsc +4 -4
- package/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/sessions.html +1 -1
- package/web/.next/server/app/sessions.rsc +4 -4
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills.html +1 -1
- package/web/.next/server/app/skills.rsc +4 -4
- package/web/.next/server/app/types/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/types.html +1 -1
- package/web/.next/server/app/types.rsc +4 -4
- package/web/.next/server/app-paths-manifest.json +6 -6
- package/web/.next/server/chunks/274.js +1 -1
- package/web/.next/server/chunks/612.js +1 -1
- package/web/.next/server/pages/404.html +1 -1
- package/web/.next/server/pages/500.html +1 -1
- package/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/static/chunks/705-c7e75806f77b880c.js +1 -0
- package/web/.next/static/chunks/839-4aefe6e71be6e1ef.js +1 -0
- package/web/.next/static/chunks/app/agents/[id]/{page-4af6c246c4ca7a97.js → page-3faf40800981a736.js} +1 -1
- package/web/.next/static/chunks/app/layout-99620746d028dda8.js +1 -0
- package/web/.next/static/css/{dd4e32c285f75776.css → b7a03c62468f4263.css} +1 -1
- package/web/.next/trace +29 -29
- package/web/.next/static/chunks/705-a16e1fe09be1ac7f.js +0 -1
- package/web/.next/static/chunks/839-23c5508622fae942.js +0 -1
- package/web/.next/static/chunks/app/layout-87ebb70bd9cb8443.js +0 -1
- /package/web/.next/static/{p4S3i9kvO359GW91DQiHu → Bz7onClw1BajMUCwqpU8o}/_buildManifest.js +0 -0
- /package/web/.next/static/{p4S3i9kvO359GW91DQiHu → Bz7onClw1BajMUCwqpU8o}/_ssgManifest.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.2.1] - 2026-10-13
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- OpenCode 2.x: when a turn fails (for example a full conversation) the error offers **Compact conversation**. Other versions only suggest starting a new conversation.
|
|
14
|
+
- Terminals: selecting text copies it, and Ctrl+Shift+C copies too (Ctrl+C only copies while text is selected).
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Minimizing the terminal panel no longer breaks the scroll of a full screen program (OpenCode, Claude Code): the terminals stay mounted, and the server remembers the screen and mouse modes a program switched on so a reload restores them.
|
|
19
|
+
- A turn that failed (conversation full, provider blocked, timeout) no longer looks like it is still running: the timer stops, "Stop" goes away and the composer sends normally. The error now says what to do.
|
|
20
|
+
- OpenCode failures now show their real reason ("Go usage limit exceeded", insufficient funds, blocked response) instead of "opencode exited with code 1".
|
|
21
|
+
- OpenCode 1.x works again: the flags `opencode run` accepts are read from its help and unsupported ones (`--standalone`, `--server`) are not passed.
|
|
22
|
+
- A new conversation no longer shows "Show earlier messages" with the count of the previous one.
|
|
23
|
+
- The tokens per turn chart in the stats panel was drawn downwards.
|
|
24
|
+
|
|
9
25
|
## [1.2.0] - 2026-10-13
|
|
10
26
|
|
|
11
27
|
### Added
|
|
@@ -133,7 +149,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
|
|
133
149
|
- Complete documentation in English and Spanish.
|
|
134
150
|
- npm package with the `hive-am` command.
|
|
135
151
|
|
|
136
|
-
[Unreleased]: https://github.com/hughcbscrt/hive-am/compare/v1.2.
|
|
152
|
+
[Unreleased]: https://github.com/hughcbscrt/hive-am/compare/v1.2.1...HEAD
|
|
153
|
+
[1.2.1]: https://github.com/hughcbscrt/hive-am/compare/v1.2.0...v1.2.1
|
|
137
154
|
[1.2.0]: https://github.com/hughcbscrt/hive-am/compare/v1.1.0...v1.2.0
|
|
138
155
|
[1.1.0]: https://github.com/hughcbscrt/hive-am/compare/v1.0.0...v1.1.0
|
|
139
156
|
[1.0.0]: https://github.com/hughcbscrt/hive-am/releases/tag/v1.0.0
|
package/package.json
CHANGED
|
@@ -3,6 +3,8 @@ import { basename, extname, sep } from 'node:path';
|
|
|
3
3
|
import { agents, resolved } from '../../db.js';
|
|
4
4
|
import { inboxDir, saveUploads } from '../../connections/files.js';
|
|
5
5
|
import { uploadsBlock } from '../../connections/prompt.js';
|
|
6
|
+
import { compactOpencodeSession } from '../../providers/opencode-server.js';
|
|
7
|
+
import { opencodeCanCompact } from '../../providers/opencode.js';
|
|
6
8
|
import { readHistory } from '../../history/index.js';
|
|
7
9
|
import { liveTurn, notifyAgentsChanged, queueDepth, sendTurn, stopAgent } from '../../runtime.js';
|
|
8
10
|
import { sessionStats } from '../../stats.js';
|
|
@@ -61,6 +63,25 @@ route('GET', '/api/agents/:id/inbox', ({ params, url, res }) => {
|
|
|
61
63
|
});
|
|
62
64
|
createReadStream(abs).pipe(res);
|
|
63
65
|
});
|
|
66
|
+
// Compacting a conversation: only OpenCode 2.x can. `GET` says whether this agent can, `POST` does it and answers when it is done.
|
|
67
|
+
route('GET', '/api/agents/:id/compact', async ({ params }) => {
|
|
68
|
+
const a = agentOrFail(params[0]);
|
|
69
|
+
return { supported: a.provider === 'opencode' && !!a.session_id && await opencodeCanCompact() };
|
|
70
|
+
});
|
|
71
|
+
route('POST', '/api/agents/:id/compact', async ({ params }) => {
|
|
72
|
+
const a = agentOrFail(params[0]);
|
|
73
|
+
if (a.provider !== 'opencode' || !a.session_id || !(await opencodeCanCompact()))
|
|
74
|
+
throw bad('This conversation cannot be compacted');
|
|
75
|
+
if (liveTurn(a.id))
|
|
76
|
+
throw bad('Wait for the agent to finish before compacting');
|
|
77
|
+
try {
|
|
78
|
+
await compactOpencodeSession(resolved(a).cwd, a.session_id, new AbortController().signal);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw bad(e instanceof Error ? e.message : 'The compaction failed');
|
|
82
|
+
}
|
|
83
|
+
return { ok: true };
|
|
84
|
+
});
|
|
64
85
|
route('POST', '/api/agents/:id/stop', ({ params }) => ({ stopped: stopAgent(params[0]) }));
|
|
65
86
|
route('POST', '/api/agents/:id/new-session', ({ params }) => {
|
|
66
87
|
const a = agentOrFail(params[0]);
|
|
@@ -162,3 +162,48 @@ export async function opencodeServer(agentId, cwd, config, signal) {
|
|
|
162
162
|
}
|
|
163
163
|
return { url: s.url, password: s.password, release };
|
|
164
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Compacts a session (OpenCode 2.x): the model summarizes the conversation so it fits again. OpenCode only admits the request and the
|
|
167
|
+
* work happens inside a running server, so a short-lived one stays up until the compaction finishes. Throws `Error` with OpenCode's own message when it fails.
|
|
168
|
+
*/
|
|
169
|
+
export async function compactOpencodeSession(cwd, sessionId, signal) {
|
|
170
|
+
const password = randomBytes(18).toString('base64url');
|
|
171
|
+
const proc = spawn('opencode', ['serve', '--hostname', '127.0.0.1', '--port', '0'], { cwd, stdio: ['ignore', 'pipe', 'pipe'], env: { ...process.env, PWD: cwd, OPENCODE_SERVER_PASSWORD: password } });
|
|
172
|
+
try {
|
|
173
|
+
const url = await new Promise((resolve, reject) => {
|
|
174
|
+
let out = '';
|
|
175
|
+
const timer = setTimeout(() => reject(new Error('opencode serve did not start in time')), START_TIMEOUT_MS);
|
|
176
|
+
const onData = (d) => { out = (out + d).slice(-2000); const m = /listening on (http:\/\/\S+)/i.exec(out); if (m) {
|
|
177
|
+
clearTimeout(timer);
|
|
178
|
+
resolve(m[1].replace(/\/$/, ''));
|
|
179
|
+
} };
|
|
180
|
+
proc.stdout.on('data', onData);
|
|
181
|
+
proc.stderr.on('data', onData);
|
|
182
|
+
proc.on('error', (e) => { clearTimeout(timer); reject(e); });
|
|
183
|
+
proc.on('exit', (c) => { clearTimeout(timer); reject(new Error(`opencode serve exited with code ${c}`)); });
|
|
184
|
+
});
|
|
185
|
+
const base = `${url}/api/session/${encodeURIComponent(sessionId)}`;
|
|
186
|
+
const headers = { ...auth(password), 'content-type': 'application/json' };
|
|
187
|
+
const admit = await fetch(`${base}/compact`, { method: 'POST', headers, body: '{}', signal });
|
|
188
|
+
if (!admit.ok)
|
|
189
|
+
throw new Error(`OpenCode refused to compact the conversation (${admit.status})`);
|
|
190
|
+
const id = (await admit.json())?.data?.id;
|
|
191
|
+
const until = Date.now() + 10 * 60_000;
|
|
192
|
+
while (Date.now() < until && !signal.aborted) {
|
|
193
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
194
|
+
const r = await fetch(`${base}/message/${id}`, { headers, signal });
|
|
195
|
+
if (!r.ok)
|
|
196
|
+
continue;
|
|
197
|
+
const m = (await r.json())?.data;
|
|
198
|
+
if (m?.status === 'completed')
|
|
199
|
+
return;
|
|
200
|
+
if (m?.status === 'failed')
|
|
201
|
+
throw new Error(String(m.error?.message ?? 'The compaction failed'));
|
|
202
|
+
}
|
|
203
|
+
throw new Error(signal.aborted ? 'Compaction cancelled' : 'The compaction took too long');
|
|
204
|
+
}
|
|
205
|
+
finally {
|
|
206
|
+
if (!proc.killed)
|
|
207
|
+
proc.kill('SIGTERM');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DATA_DIR } from '../db.js';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { execFile } from 'node:child_process';
|
|
3
4
|
const INBOX_ROOT = join(DATA_DIR, 'inbox');
|
|
4
5
|
import { spawnJson } from './spawn.js';
|
|
5
6
|
import { dispatchMcpConfigOpencode } from '../mcp-config.js';
|
|
@@ -26,10 +27,37 @@ export function opencodePermissions(level) {
|
|
|
26
27
|
external_directory: { '*': 'deny', [`${INBOX_ROOT}/**`]: 'allow' },
|
|
27
28
|
};
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* OpenCode 1.x and 2.x take different flags (1.x has no `--standalone`, `--server` or maybe `--auto`; an unknown flag makes it print its help and exit 1).
|
|
32
|
+
* The flags `opencode run` knows are read once from its help, and only those are passed.
|
|
33
|
+
*/
|
|
34
|
+
let runFlags = null;
|
|
35
|
+
export function opencodeRunFlags() {
|
|
36
|
+
runFlags ??= new Promise((resolve) => {
|
|
37
|
+
execFile('opencode', ['run', '--help'], { timeout: 15_000, maxBuffer: 1 << 20 }, (_err, out, errOut) => {
|
|
38
|
+
const found = new Set(`${out}\n${errOut}`.match(/--[a-z][a-z-]*/g) ?? []);
|
|
39
|
+
if (!found.has('--format'))
|
|
40
|
+
runFlags = null; // no readable help: try again next turn, and pass the current flags meanwhile
|
|
41
|
+
resolve(found.has('--format') ? found : null);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
return runFlags;
|
|
45
|
+
}
|
|
46
|
+
/** The text of an `error` event: OpenCode's message, with the provider's own when it only wraps one. */
|
|
47
|
+
function opencodeErrorText(err) {
|
|
48
|
+
if (!err)
|
|
49
|
+
return '';
|
|
50
|
+
if (typeof err === 'string')
|
|
51
|
+
return err;
|
|
52
|
+
const msg = String(err.message ?? err.data?.message ?? err.name ?? '').trim();
|
|
53
|
+
return msg || (typeof err.type === 'string' ? err.type : '');
|
|
54
|
+
}
|
|
29
55
|
/** OpenCode: `opencode run --format json`; parts arrive whole, so deltas are derived from per-part length. */
|
|
30
56
|
export async function* runOpencode(o) {
|
|
31
57
|
const { agent } = o;
|
|
32
|
-
const
|
|
58
|
+
const flags = await opencodeRunFlags();
|
|
59
|
+
const has = (f) => !flags || flags.has(f);
|
|
60
|
+
const args = ['run', '--format', 'json', ...['--thinking', '--auto'].filter(has)];
|
|
33
61
|
// Sessions created while the folder was wrong (older hive-am builds) would keep running there; start fresh instead.
|
|
34
62
|
const recorded = agent.session_id ? opencodeSessionDir(agent.session_id) : null;
|
|
35
63
|
const resume = agent.session_id && (!recorded || recorded === agent.cwd) ? agent.session_id : null;
|
|
@@ -48,7 +76,7 @@ export async function* runOpencode(o) {
|
|
|
48
76
|
// started with it and keeps hive connected between turns. If that server cannot start, a private one-off server is used instead.
|
|
49
77
|
let access = null;
|
|
50
78
|
// Only agents answering an external chat gain enough from it (somebody is waiting for a reply and the first `channel_reply` would fail); every other agent keeps the one-off server and costs nothing between turns.
|
|
51
|
-
if (o.mcpCaps.includes('channel') && !process.env.HIVE_AM_OPENCODE_STANDALONE) {
|
|
79
|
+
if (o.mcpCaps.includes('channel') && !process.env.HIVE_AM_OPENCODE_STANDALONE && has('--server')) {
|
|
52
80
|
try {
|
|
53
81
|
access = await opencodeServer(agent.id, agent.cwd, config, o.signal);
|
|
54
82
|
}
|
|
@@ -60,8 +88,8 @@ export async function* runOpencode(o) {
|
|
|
60
88
|
args.splice(1, 0, '--server', access.url);
|
|
61
89
|
env.OPENCODE_SERVER_PASSWORD = access.password;
|
|
62
90
|
}
|
|
63
|
-
else
|
|
64
|
-
args.splice(1, 0, '--standalone');
|
|
91
|
+
else if (has('--standalone'))
|
|
92
|
+
args.splice(1, 0, '--standalone'); // 1.x always runs its own server
|
|
65
93
|
args.push(prompt);
|
|
66
94
|
// Stopping a turn must really stop the model: a client that is killed would leave the server working on, so the server goes down with it.
|
|
67
95
|
if (access)
|
|
@@ -69,12 +97,18 @@ export async function* runOpencode(o) {
|
|
|
69
97
|
const seen = new Map();
|
|
70
98
|
const toolStarted = new Set();
|
|
71
99
|
let sawSession = false;
|
|
100
|
+
// With `--format json` a failure (quota, usage limit, blocked response) is an `error` event on stdout and the exit code is just 1, so the reason is kept here.
|
|
101
|
+
let failure = '';
|
|
72
102
|
try {
|
|
73
103
|
for await (const ev of spawnJson({ cmd: 'opencode', args, cwd: agent.cwd, env, signal: o.signal })) {
|
|
74
104
|
if (ev.sessionID && !sawSession) {
|
|
75
105
|
sawSession = true;
|
|
76
106
|
yield { t: 'session', sessionId: ev.sessionID };
|
|
77
107
|
}
|
|
108
|
+
if (ev.type === 'error') {
|
|
109
|
+
failure = opencodeErrorText(ev.error) || failure;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
78
112
|
const p = ev.part;
|
|
79
113
|
if (!p)
|
|
80
114
|
continue;
|
|
@@ -103,9 +137,21 @@ export async function* runOpencode(o) {
|
|
|
103
137
|
}
|
|
104
138
|
}
|
|
105
139
|
}
|
|
140
|
+
if (failure)
|
|
141
|
+
throw new Error(failure);
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
if (failure && !o.signal.aborted)
|
|
145
|
+
throw new Error(failure); // OpenCode's own reason says more than "exited with code 1"
|
|
146
|
+
throw e;
|
|
106
147
|
}
|
|
107
148
|
finally {
|
|
108
149
|
access?.release();
|
|
109
150
|
}
|
|
110
151
|
yield { t: 'done', ok: true };
|
|
111
152
|
}
|
|
153
|
+
/** Compacting a conversation needs OpenCode 2.x (the version that has `--standalone`). */
|
|
154
|
+
export async function opencodeCanCompact() {
|
|
155
|
+
const flags = await opencodeRunFlags();
|
|
156
|
+
return !flags || flags.has('--standalone');
|
|
157
|
+
}
|
package/server/dist/terminals.js
CHANGED
|
@@ -14,6 +14,7 @@ import { containerName } from './objects/docker.js';
|
|
|
14
14
|
* shows the same terminals with what they printed last. They end when the server stops.
|
|
15
15
|
*/
|
|
16
16
|
const MAX_TERMINALS = 12, BUFFER = 256 * 1024;
|
|
17
|
+
const MODE = /\x1b\[\?([0-9;]+)([hl])/g;
|
|
17
18
|
export const terminalsEnabled = () => process.env.HIVE_AM_TERMINALS !== '0';
|
|
18
19
|
let lib;
|
|
19
20
|
async function ptyLib() {
|
|
@@ -92,11 +93,18 @@ export async function createTerminal(spec) {
|
|
|
92
93
|
const { cwd, file, args, title } = plan(spec);
|
|
93
94
|
const env = Object.fromEntries(Object.entries(process.env).filter(([k, v]) => v !== undefined && !k.startsWith('HIVE_AM_') && k !== 'HIVE_AGENT_ID' && k !== 'HIVE_CAPS'));
|
|
94
95
|
const pty = p.spawn(file, args, { name: 'xterm-256color', cols: 100, rows: 28, cwd, env: { ...env, TERM: 'xterm-256color', COLORTERM: 'truecolor' } });
|
|
95
|
-
const t = { id: randomUUID(), title, cwd, command: [file, ...args].join(' '), created: Date.now(), cols: 100, rows: 28, pty, chunks: [], size: 0, clients: new Set() };
|
|
96
|
+
const t = { id: randomUUID(), title, cwd, command: [file, ...args].join(' '), created: Date.now(), cols: 100, rows: 28, pty, chunks: [], size: 0, modes: new Set(), clients: new Set() };
|
|
96
97
|
terms.set(t.id, t);
|
|
97
98
|
pty.onData((d) => {
|
|
98
99
|
t.chunks.push(d);
|
|
99
100
|
t.size += d.length;
|
|
101
|
+
for (const m of d.matchAll(MODE))
|
|
102
|
+
for (const n of m[1].split(';')) {
|
|
103
|
+
if (m[2] === 'h')
|
|
104
|
+
t.modes.add(n);
|
|
105
|
+
else
|
|
106
|
+
t.modes.delete(n);
|
|
107
|
+
}
|
|
100
108
|
while (t.size > BUFFER && t.chunks.length > 1)
|
|
101
109
|
t.size -= t.chunks.shift().length; // the oldest output goes first
|
|
102
110
|
const msg = JSON.stringify({ t: 'out', d });
|
|
@@ -142,7 +150,7 @@ export function attachTerminal(ws, id) {
|
|
|
142
150
|
t.clients.add(ws);
|
|
143
151
|
ws.send(JSON.stringify({ t: 'init', title: t.title, cols: t.cols, rows: t.rows, alive: !t.exit }));
|
|
144
152
|
if (t.chunks.length)
|
|
145
|
-
ws.send(JSON.stringify({ t: 'out', d: t.chunks.join('') }));
|
|
153
|
+
ws.send(JSON.stringify({ t: 'out', d: [...t.modes].map((n) => `\x1b[?${n}h`).join('') + t.chunks.join('') }));
|
|
146
154
|
if (t.exit)
|
|
147
155
|
ws.send(JSON.stringify({ t: 'exit', code: t.exit.code }));
|
|
148
156
|
ws.on('message', (raw) => {
|
package/web/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Bz7onClw1BajMUCwqpU8o
|
|
@@ -13,10 +13,19 @@
|
|
|
13
13
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
14
14
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
15
15
|
"static/css/945795da867f5250.css",
|
|
16
|
-
"static/css/
|
|
16
|
+
"static/css/b7a03c62468f4263.css",
|
|
17
17
|
"static/chunks/586-f7017d585a84738d.js",
|
|
18
|
-
"static/chunks/839-
|
|
19
|
-
"static/chunks/app/layout-
|
|
18
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
19
|
+
"static/chunks/app/layout-99620746d028dda8.js"
|
|
20
|
+
],
|
|
21
|
+
"/connections/page": [
|
|
22
|
+
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
23
|
+
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
24
|
+
"static/chunks/89-b194fcffe5120c44.js",
|
|
25
|
+
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
26
|
+
"static/chunks/586-f7017d585a84738d.js",
|
|
27
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
28
|
+
"static/chunks/app/connections/page-0936beaf02d863c6.js"
|
|
20
29
|
],
|
|
21
30
|
"/agents/[id]/page": [
|
|
22
31
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
@@ -28,25 +37,13 @@
|
|
|
28
37
|
"static/chunks/837-33c7480524f48577.js",
|
|
29
38
|
"static/chunks/486-13e08542f3a1cbac.js",
|
|
30
39
|
"static/chunks/316-26da9cc233ba7557.js",
|
|
31
|
-
"static/chunks/839-
|
|
40
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
32
41
|
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
33
42
|
"static/chunks/350-56599dc3bf06066d.js",
|
|
34
43
|
"static/chunks/291-efae53ea5f7ee92d.js",
|
|
35
44
|
"static/chunks/30-9adcbe92b15a6815.js",
|
|
36
|
-
"static/chunks/705-
|
|
37
|
-
"static/chunks/app/agents/[id]/page-
|
|
38
|
-
],
|
|
39
|
-
"/relations/page": [
|
|
40
|
-
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
41
|
-
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
42
|
-
"static/chunks/89-b194fcffe5120c44.js",
|
|
43
|
-
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
44
|
-
"static/css/c4a545148b5320ec.css",
|
|
45
|
-
"static/chunks/2b9ff8ee-969e65cc354b2150.js",
|
|
46
|
-
"static/chunks/586-f7017d585a84738d.js",
|
|
47
|
-
"static/chunks/562-7c2e33d838e869bf.js",
|
|
48
|
-
"static/chunks/839-23c5508622fae942.js",
|
|
49
|
-
"static/chunks/app/relations/page-fba25393c8688714.js"
|
|
45
|
+
"static/chunks/705-c7e75806f77b880c.js",
|
|
46
|
+
"static/chunks/app/agents/[id]/page-3faf40800981a736.js"
|
|
50
47
|
],
|
|
51
48
|
"/resources/[id]/page": [
|
|
52
49
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
@@ -58,7 +55,7 @@
|
|
|
58
55
|
"static/chunks/837-33c7480524f48577.js",
|
|
59
56
|
"static/chunks/486-13e08542f3a1cbac.js",
|
|
60
57
|
"static/chunks/581-3ad5c4343dad3f50.js",
|
|
61
|
-
"static/chunks/839-
|
|
58
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
62
59
|
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
63
60
|
"static/chunks/350-56599dc3bf06066d.js",
|
|
64
61
|
"static/chunks/291-efae53ea5f7ee92d.js",
|
|
@@ -67,15 +64,6 @@
|
|
|
67
64
|
"static/chunks/491-6b4e6201f5110dff.js",
|
|
68
65
|
"static/chunks/app/resources/[id]/page-d110d89bb8b5fca7.js"
|
|
69
66
|
],
|
|
70
|
-
"/connections/page": [
|
|
71
|
-
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
72
|
-
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
73
|
-
"static/chunks/89-b194fcffe5120c44.js",
|
|
74
|
-
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
75
|
-
"static/chunks/586-f7017d585a84738d.js",
|
|
76
|
-
"static/chunks/839-23c5508622fae942.js",
|
|
77
|
-
"static/chunks/app/connections/page-0936beaf02d863c6.js"
|
|
78
|
-
],
|
|
79
67
|
"/resources/page": [
|
|
80
68
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
81
69
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
@@ -86,7 +74,7 @@
|
|
|
86
74
|
"static/chunks/837-33c7480524f48577.js",
|
|
87
75
|
"static/chunks/486-13e08542f3a1cbac.js",
|
|
88
76
|
"static/chunks/581-3ad5c4343dad3f50.js",
|
|
89
|
-
"static/chunks/839-
|
|
77
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
90
78
|
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
91
79
|
"static/chunks/350-56599dc3bf06066d.js",
|
|
92
80
|
"static/chunks/291-efae53ea5f7ee92d.js",
|
|
@@ -95,74 +83,86 @@
|
|
|
95
83
|
"static/chunks/491-6b4e6201f5110dff.js",
|
|
96
84
|
"static/chunks/app/resources/page-bbd0b450d3f3131d.js"
|
|
97
85
|
],
|
|
98
|
-
"/
|
|
86
|
+
"/schedules/page": [
|
|
99
87
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
100
88
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
101
89
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
102
90
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
103
91
|
"static/chunks/586-f7017d585a84738d.js",
|
|
104
|
-
"static/chunks/
|
|
105
|
-
"static/chunks/
|
|
106
|
-
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
107
|
-
"static/chunks/app/agents/page-f4c4c80f955f3967.js"
|
|
92
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
93
|
+
"static/chunks/app/schedules/page-a1124397fc760413.js"
|
|
108
94
|
],
|
|
109
|
-
"/page": [
|
|
95
|
+
"/sessions/page": [
|
|
110
96
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
111
97
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
112
98
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
113
99
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
114
100
|
"static/chunks/586-f7017d585a84738d.js",
|
|
115
101
|
"static/chunks/706-fa2be0f10ffebe6a.js",
|
|
116
|
-
"static/chunks/
|
|
117
|
-
"static/chunks/839-
|
|
118
|
-
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
102
|
+
"static/chunks/176-aeaf907a6ea5627d.js",
|
|
103
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
119
104
|
"static/chunks/350-56599dc3bf06066d.js",
|
|
120
|
-
"static/chunks/
|
|
121
|
-
"static/chunks/
|
|
122
|
-
"static/chunks/app/page-a7f292117b7d76bf.js"
|
|
105
|
+
"static/chunks/705-c7e75806f77b880c.js",
|
|
106
|
+
"static/chunks/app/sessions/page-0e322811b0cde724.js"
|
|
123
107
|
],
|
|
124
|
-
"/
|
|
108
|
+
"/skills/page": [
|
|
125
109
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
126
110
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
127
111
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
128
112
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
129
113
|
"static/chunks/586-f7017d585a84738d.js",
|
|
130
|
-
"static/chunks/
|
|
131
|
-
"static/chunks/
|
|
114
|
+
"static/chunks/706-fa2be0f10ffebe6a.js",
|
|
115
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
116
|
+
"static/chunks/app/skills/page-22ea0ef89d9f7a13.js"
|
|
132
117
|
],
|
|
133
|
-
"/
|
|
118
|
+
"/types/page": [
|
|
134
119
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
135
120
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
136
121
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
137
122
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
138
123
|
"static/chunks/586-f7017d585a84738d.js",
|
|
139
124
|
"static/chunks/706-fa2be0f10ffebe6a.js",
|
|
140
|
-
"static/chunks/
|
|
141
|
-
"static/chunks/
|
|
142
|
-
"static/chunks/
|
|
143
|
-
"static/chunks/705-a16e1fe09be1ac7f.js",
|
|
144
|
-
"static/chunks/app/sessions/page-0e322811b0cde724.js"
|
|
125
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
126
|
+
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
127
|
+
"static/chunks/app/types/page-18c4e1db2724d41d.js"
|
|
145
128
|
],
|
|
146
|
-
"/
|
|
129
|
+
"/agents/page": [
|
|
147
130
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
148
131
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
149
132
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
150
133
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
151
134
|
"static/chunks/586-f7017d585a84738d.js",
|
|
152
135
|
"static/chunks/706-fa2be0f10ffebe6a.js",
|
|
153
|
-
"static/chunks/839-
|
|
154
|
-
"static/chunks/
|
|
136
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
137
|
+
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
138
|
+
"static/chunks/app/agents/page-f4c4c80f955f3967.js"
|
|
155
139
|
],
|
|
156
|
-
"/
|
|
140
|
+
"/page": [
|
|
157
141
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
158
142
|
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
159
143
|
"static/chunks/89-b194fcffe5120c44.js",
|
|
160
144
|
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
161
145
|
"static/chunks/586-f7017d585a84738d.js",
|
|
162
146
|
"static/chunks/706-fa2be0f10ffebe6a.js",
|
|
163
|
-
"static/chunks/
|
|
147
|
+
"static/chunks/486-13e08542f3a1cbac.js",
|
|
148
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
164
149
|
"static/chunks/517-ccaf8cc5c733cbd8.js",
|
|
165
|
-
"static/chunks/
|
|
150
|
+
"static/chunks/350-56599dc3bf06066d.js",
|
|
151
|
+
"static/chunks/291-efae53ea5f7ee92d.js",
|
|
152
|
+
"static/chunks/844-fe55292e0701f436.js",
|
|
153
|
+
"static/chunks/app/page-a7f292117b7d76bf.js"
|
|
154
|
+
],
|
|
155
|
+
"/relations/page": [
|
|
156
|
+
"static/chunks/webpack-ef515e41a83a16ac.js",
|
|
157
|
+
"static/chunks/0937d497-114a2a3de515565e.js",
|
|
158
|
+
"static/chunks/89-b194fcffe5120c44.js",
|
|
159
|
+
"static/chunks/main-app-6086068e5fb5eacd.js",
|
|
160
|
+
"static/css/c4a545148b5320ec.css",
|
|
161
|
+
"static/chunks/2b9ff8ee-969e65cc354b2150.js",
|
|
162
|
+
"static/chunks/586-f7017d585a84738d.js",
|
|
163
|
+
"static/chunks/562-7c2e33d838e869bf.js",
|
|
164
|
+
"static/chunks/839-4aefe6e71be6e1ef.js",
|
|
165
|
+
"static/chunks/app/relations/page-fba25393c8688714.js"
|
|
166
166
|
]
|
|
167
167
|
}
|
|
168
168
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_not-found/page": "/_not-found",
|
|
3
3
|
"/favicon.ico/route": "/favicon.ico",
|
|
4
|
-
"/apple-icon.png/route": "/apple-icon.png",
|
|
5
4
|
"/icon.png/route": "/icon.png",
|
|
5
|
+
"/apple-icon.png/route": "/apple-icon.png",
|
|
6
|
+
"/connections/page": "/connections",
|
|
6
7
|
"/agents/[id]/page": "/agents/[id]",
|
|
7
|
-
"/relations/page": "/relations",
|
|
8
8
|
"/resources/[id]/page": "/resources/[id]",
|
|
9
|
-
"/connections/page": "/connections",
|
|
10
9
|
"/resources/page": "/resources",
|
|
11
|
-
"/agents/page": "/agents",
|
|
12
|
-
"/page": "/",
|
|
13
10
|
"/schedules/page": "/schedules",
|
|
14
11
|
"/sessions/page": "/sessions",
|
|
15
12
|
"/skills/page": "/skills",
|
|
16
|
-
"/types/page": "/types"
|
|
13
|
+
"/types/page": "/types",
|
|
14
|
+
"/agents/page": "/agents",
|
|
15
|
+
"/page": "/",
|
|
16
|
+
"/relations/page": "/relations"
|
|
17
17
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/Bz7onClw1BajMUCwqpU8o/_buildManifest.js",
|
|
9
|
+
"static/Bz7onClw1BajMUCwqpU8o/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [
|
|
12
12
|
"static/chunks/webpack-ef515e41a83a16ac.js",
|