@agent-team-foundation/first-tree-hub 0.14.5 → 0.14.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap-BmeaRhRp.mjs +3 -0
- package/dist/{bootstrap-CQQGgIx1.mjs → bootstrap-CmkHQsnS.mjs} +24 -16
- package/dist/cli/index.mjs +6 -94
- package/dist/{dist-CrdnqZjv.mjs → feishu-BE7QRxnE.mjs} +170 -379
- package/dist/feishu-De9_bA91.mjs +3 -0
- package/dist/index.mjs +5 -12
- package/dist/saas-connect-CNY9Ve5V.mjs +13748 -0
- package/package.json +4 -12
- package/dist/chunk-BSw8zbkd.mjs +0 -37
- package/dist/client-BPRIfrOT-CoV_2o7e.mjs +0 -4230
- package/dist/client-CEdYVnoj-BGiGcJbH.mjs +0 -7
- package/dist/dist-LgF7LHpE.mjs +0 -430
- package/dist/drizzle/0000_shocking_darkhawk.sql +0 -92
- package/dist/drizzle/0001_v2_schema_updates.sql +0 -26
- package/dist/drizzle/0002_adapter_tables.sql +0 -64
- package/dist/drizzle/0003_feishu_adapter.sql +0 -21
- package/dist/drizzle/0004_adapter_refactor.sql +0 -13
- package/dist/drizzle/0005_delegate_mention.sql +0 -1
- package/dist/drizzle/0006_agent_tree_path.sql +0 -1
- package/dist/drizzle/0007_decouple_context_tree.sql +0 -2
- package/dist/drizzle/0008_uuid_identity.sql +0 -12
- package/dist/drizzle/0009_agent_runtime_m1.sql +0 -31
- package/dist/drizzle/0010_cloud_multi_tenancy.sql +0 -34
- package/dist/drizzle/0011_org_uuid_pk.sql +0 -22
- package/dist/drizzle/0012_session_level_state.sql +0 -19
- package/dist/drizzle/0013_hub_tasks.sql +0 -38
- package/dist/drizzle/0014_drop_task_fks.sql +0 -9
- package/dist/drizzle/0015_member_system.sql +0 -34
- package/dist/drizzle/0016_strange_havok.sql +0 -25
- package/dist/drizzle/0017_session_outputs_unique.sql +0 -1
- package/dist/drizzle/0018_agent_visibility.sql +0 -13
- package/dist/drizzle/0019_agent_configs.sql +0 -30
- package/dist/drizzle/0020_unified_user_token.sql +0 -154
- package/dist/drizzle/0021_drop_agents_profile.sql +0 -10
- package/dist/drizzle/0022_session_events.sql +0 -32
- package/dist/drizzle/0023_clients_org_scoping.sql +0 -40
- package/dist/drizzle/0024_display_name_not_null.sql +0 -31
- package/dist/drizzle/0025_inbox_silent_entries.sql +0 -53
- package/dist/drizzle/0026_saas_onboarding.sql +0 -153
- package/dist/drizzle/0027_runtime_provider.sql +0 -10
- package/dist/drizzle/0028_auth_identity_user_github_unique.sql +0 -12
- package/dist/drizzle/0029_direct_agent_only_mention_only.sql +0 -28
- package/dist/drizzle/0030_chat_first_workspace.sql +0 -129
- package/dist/drizzle/0031_drop_system_configs.sql +0 -11
- package/dist/drizzle/0032_organization_settings.sql +0 -36
- package/dist/drizzle/0033_onboarding_dismissed_at.sql +0 -13
- package/dist/drizzle/0034_pending_questions.sql +0 -34
- package/dist/drizzle/0035_drop_hub_tasks.sql +0 -7
- package/dist/drizzle/0036_github_entity_chat_mappings.sql +0 -47
- package/dist/drizzle/0037_github_app_installations.sql +0 -52
- package/dist/drizzle/0038_chat_membership_user_state.sql +0 -223
- package/dist/drizzle/0039_drop_chat_participants_subscriptions.sql +0 -26
- package/dist/drizzle/0040_chat_user_state_engagement.sql +0 -24
- package/dist/drizzle/0041_notifications_dedup_key.sql +0 -29
- package/dist/drizzle/0042_notifications_drop_legacy_types.sql +0 -36
- package/dist/drizzle/0043_onboarding_completed_at.sql +0 -32
- package/dist/drizzle/0044_agent_avatar_color.sql +0 -11
- package/dist/drizzle/0045_agent_avatar_image.sql +0 -17
- package/dist/drizzle/meta/0000_snapshot.json +0 -687
- package/dist/drizzle/meta/0001_snapshot.json +0 -687
- package/dist/drizzle/meta/0012_snapshot.json +0 -1451
- package/dist/drizzle/meta/0013_snapshot.json +0 -1771
- package/dist/drizzle/meta/0014_snapshot.json +0 -1717
- package/dist/drizzle/meta/0016_snapshot.json +0 -1917
- package/dist/drizzle/meta/0018_snapshot.json +0 -1938
- package/dist/drizzle/meta/_journal.json +0 -328
- package/dist/esm-iadMkGbV.mjs +0 -1516
- package/dist/execAsync-DUfRkc4a.mjs +0 -10
- package/dist/execAsync-YbEZSOYd.mjs +0 -10
- package/dist/feishu-DNoBroKK.mjs +0 -53
- package/dist/from-DQ7eNRwu.mjs +0 -3840
- package/dist/getMachineId-bsd-BmasEOJr.mjs +0 -27
- package/dist/getMachineId-bsd-Dh3h0DDE.mjs +0 -27
- package/dist/getMachineId-darwin-CuhM3hfZ.mjs +0 -24
- package/dist/getMachineId-darwin-D9wR0SLj.mjs +0 -24
- package/dist/getMachineId-linux-CYfb0oxZ.mjs +0 -20
- package/dist/getMachineId-linux-D8ZaSjAC.mjs +0 -20
- package/dist/getMachineId-unsupported-Cu3iisaD.mjs +0 -15
- package/dist/getMachineId-unsupported-DZqI4ZT5.mjs +0 -15
- package/dist/getMachineId-win-8ZJbtrdf.mjs +0 -26
- package/dist/getMachineId-win-DT-hqwVp.mjs +0 -26
- package/dist/invitation-C9m2gQx4-C_4f5VTs.mjs +0 -4
- package/dist/invitation-D_ENPHyj-5ETiae5r.mjs +0 -167
- package/dist/logger-core-BTmvdflj-DjW8FM4T.mjs +0 -146
- package/dist/multipart-parser-QRu3OKK4.mjs +0 -294
- package/dist/observability-BAScT_5S-BcW9HgkG.mjs +0 -96129
- package/dist/observability-eLA9iNK_.mjs +0 -5
- package/dist/saas-connect-CYp9TOB5.mjs +0 -21918
- package/dist/src-DFlbpJfU.mjs +0 -1176
- package/dist/src-DNBS5Yjj.mjs +0 -735
- package/dist/uuid-DbS_4vFh-iFghv4zA.mjs +0 -129
- package/dist/web/assets/index-9wK0udbH.js +0 -416
- package/dist/web/assets/index-C7x7O7dG.js +0 -11
- package/dist/web/assets/index-DE7Q3QWE.css +0 -1
- package/dist/web/favicon.svg +0 -9
- package/dist/web/fonts/inter-latin-ext.woff2 +0 -0
- package/dist/web/fonts/inter-latin.woff2 +0 -0
- package/dist/web/fonts/jetbrains-mono-latin-ext.woff2 +0 -0
- package/dist/web/fonts/jetbrains-mono-latin.woff2 +0 -0
- package/dist/web/index.html +0 -39
- /package/dist/{cli-fetch--tiwKm5S.mjs → cli-fetch-BGVItZxo.mjs} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import "./observability-BAScT_5S-BcW9HgkG.mjs";
|
|
2
|
-
import "./logger-core-BTmvdflj-DjW8FM4T.mjs";
|
|
3
|
-
import "./dist-CrdnqZjv.mjs";
|
|
4
|
-
import "./uuid-DbS_4vFh-iFghv4zA.mjs";
|
|
5
|
-
import "./src-DNBS5Yjj.mjs";
|
|
6
|
-
import { St as listMyPinnedAgents } from "./client-BPRIfrOT-CoV_2o7e.mjs";
|
|
7
|
-
export { listMyPinnedAgents };
|
package/dist/dist-LgF7LHpE.mjs
DELETED
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
import { i as __require, t as __commonJSMin } from "./chunk-BSw8zbkd.mjs";
|
|
2
|
-
import { t as require_src } from "./src-DNBS5Yjj.mjs";
|
|
3
|
-
//#region ../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/helpers.js
|
|
4
|
-
var require_helpers = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
5
|
-
var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === void 0) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function() {
|
|
11
|
-
return m[k];
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === void 0) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
value: v
|
|
23
|
-
});
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = exports && exports.__importStar || function(mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) {
|
|
31
|
-
for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
-
}
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.req = exports.json = exports.toBuffer = void 0;
|
|
38
|
-
const http$1 = __importStar(__require("http"));
|
|
39
|
-
const https = __importStar(__require("https"));
|
|
40
|
-
async function toBuffer(stream) {
|
|
41
|
-
let length = 0;
|
|
42
|
-
const chunks = [];
|
|
43
|
-
for await (const chunk of stream) {
|
|
44
|
-
length += chunk.length;
|
|
45
|
-
chunks.push(chunk);
|
|
46
|
-
}
|
|
47
|
-
return Buffer.concat(chunks, length);
|
|
48
|
-
}
|
|
49
|
-
exports.toBuffer = toBuffer;
|
|
50
|
-
async function json(stream) {
|
|
51
|
-
const str = (await toBuffer(stream)).toString("utf8");
|
|
52
|
-
try {
|
|
53
|
-
return JSON.parse(str);
|
|
54
|
-
} catch (_err) {
|
|
55
|
-
const err = _err;
|
|
56
|
-
err.message += ` (input: ${str})`;
|
|
57
|
-
throw err;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.json = json;
|
|
61
|
-
function req(url, opts = {}) {
|
|
62
|
-
const req = ((typeof url === "string" ? url : url.href).startsWith("https:") ? https : http$1).request(url, opts);
|
|
63
|
-
const promise = new Promise((resolve, reject) => {
|
|
64
|
-
req.once("response", resolve).once("error", reject).end();
|
|
65
|
-
});
|
|
66
|
-
req.then = promise.then.bind(promise);
|
|
67
|
-
return req;
|
|
68
|
-
}
|
|
69
|
-
exports.req = req;
|
|
70
|
-
}));
|
|
71
|
-
//#endregion
|
|
72
|
-
//#region ../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/dist/index.js
|
|
73
|
-
var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
74
|
-
var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
|
|
75
|
-
if (k2 === void 0) k2 = k;
|
|
76
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
77
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
|
|
78
|
-
enumerable: true,
|
|
79
|
-
get: function() {
|
|
80
|
-
return m[k];
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
Object.defineProperty(o, k2, desc);
|
|
84
|
-
}) : (function(o, m, k, k2) {
|
|
85
|
-
if (k2 === void 0) k2 = k;
|
|
86
|
-
o[k2] = m[k];
|
|
87
|
-
}));
|
|
88
|
-
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) {
|
|
89
|
-
Object.defineProperty(o, "default", {
|
|
90
|
-
enumerable: true,
|
|
91
|
-
value: v
|
|
92
|
-
});
|
|
93
|
-
}) : function(o, v) {
|
|
94
|
-
o["default"] = v;
|
|
95
|
-
});
|
|
96
|
-
var __importStar = exports && exports.__importStar || function(mod) {
|
|
97
|
-
if (mod && mod.__esModule) return mod;
|
|
98
|
-
var result = {};
|
|
99
|
-
if (mod != null) {
|
|
100
|
-
for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
101
|
-
}
|
|
102
|
-
__setModuleDefault(result, mod);
|
|
103
|
-
return result;
|
|
104
|
-
};
|
|
105
|
-
var __exportStar = exports && exports.__exportStar || function(m, exports$1) {
|
|
106
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
|
|
107
|
-
};
|
|
108
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
109
|
-
exports.Agent = void 0;
|
|
110
|
-
const net$1 = __importStar(__require("net"));
|
|
111
|
-
const http = __importStar(__require("http"));
|
|
112
|
-
const https_1 = __require("https");
|
|
113
|
-
__exportStar(require_helpers(), exports);
|
|
114
|
-
const INTERNAL = Symbol("AgentBaseInternalState");
|
|
115
|
-
var Agent = class extends http.Agent {
|
|
116
|
-
constructor(opts) {
|
|
117
|
-
super(opts);
|
|
118
|
-
this[INTERNAL] = {};
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Determine whether this is an `http` or `https` request.
|
|
122
|
-
*/
|
|
123
|
-
isSecureEndpoint(options) {
|
|
124
|
-
if (options) {
|
|
125
|
-
if (typeof options.secureEndpoint === "boolean") return options.secureEndpoint;
|
|
126
|
-
if (typeof options.protocol === "string") return options.protocol === "https:";
|
|
127
|
-
}
|
|
128
|
-
const { stack } = /* @__PURE__ */ new Error();
|
|
129
|
-
if (typeof stack !== "string") return false;
|
|
130
|
-
return stack.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1);
|
|
131
|
-
}
|
|
132
|
-
incrementSockets(name) {
|
|
133
|
-
if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) return null;
|
|
134
|
-
if (!this.sockets[name]) this.sockets[name] = [];
|
|
135
|
-
const fakeSocket = new net$1.Socket({ writable: false });
|
|
136
|
-
this.sockets[name].push(fakeSocket);
|
|
137
|
-
this.totalSocketCount++;
|
|
138
|
-
return fakeSocket;
|
|
139
|
-
}
|
|
140
|
-
decrementSockets(name, socket) {
|
|
141
|
-
if (!this.sockets[name] || socket === null) return;
|
|
142
|
-
const sockets = this.sockets[name];
|
|
143
|
-
const index = sockets.indexOf(socket);
|
|
144
|
-
if (index !== -1) {
|
|
145
|
-
sockets.splice(index, 1);
|
|
146
|
-
this.totalSocketCount--;
|
|
147
|
-
if (sockets.length === 0) delete this.sockets[name];
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
getName(options) {
|
|
151
|
-
if (this.isSecureEndpoint(options)) return https_1.Agent.prototype.getName.call(this, options);
|
|
152
|
-
return super.getName(options);
|
|
153
|
-
}
|
|
154
|
-
createSocket(req, options, cb) {
|
|
155
|
-
const connectOpts = {
|
|
156
|
-
...options,
|
|
157
|
-
secureEndpoint: this.isSecureEndpoint(options)
|
|
158
|
-
};
|
|
159
|
-
const name = this.getName(connectOpts);
|
|
160
|
-
const fakeSocket = this.incrementSockets(name);
|
|
161
|
-
Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => {
|
|
162
|
-
this.decrementSockets(name, fakeSocket);
|
|
163
|
-
if (socket instanceof http.Agent) try {
|
|
164
|
-
return socket.addRequest(req, connectOpts);
|
|
165
|
-
} catch (err) {
|
|
166
|
-
return cb(err);
|
|
167
|
-
}
|
|
168
|
-
this[INTERNAL].currentSocket = socket;
|
|
169
|
-
super.createSocket(req, options, cb);
|
|
170
|
-
}, (err) => {
|
|
171
|
-
this.decrementSockets(name, fakeSocket);
|
|
172
|
-
cb(err);
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
createConnection() {
|
|
176
|
-
const socket = this[INTERNAL].currentSocket;
|
|
177
|
-
this[INTERNAL].currentSocket = void 0;
|
|
178
|
-
if (!socket) throw new Error("No socket was returned in the `connect()` function");
|
|
179
|
-
return socket;
|
|
180
|
-
}
|
|
181
|
-
get defaultPort() {
|
|
182
|
-
return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80);
|
|
183
|
-
}
|
|
184
|
-
set defaultPort(v) {
|
|
185
|
-
if (this[INTERNAL]) this[INTERNAL].defaultPort = v;
|
|
186
|
-
}
|
|
187
|
-
get protocol() {
|
|
188
|
-
return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:");
|
|
189
|
-
}
|
|
190
|
-
set protocol(v) {
|
|
191
|
-
if (this[INTERNAL]) this[INTERNAL].protocol = v;
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
exports.Agent = Agent;
|
|
195
|
-
}));
|
|
196
|
-
//#endregion
|
|
197
|
-
//#region ../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/parse-proxy-response.js
|
|
198
|
-
var require_parse_proxy_response = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
199
|
-
var __importDefault = exports && exports.__importDefault || function(mod) {
|
|
200
|
-
return mod && mod.__esModule ? mod : { "default": mod };
|
|
201
|
-
};
|
|
202
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
203
|
-
exports.parseProxyResponse = void 0;
|
|
204
|
-
const debug = (0, __importDefault(require_src()).default)("https-proxy-agent:parse-proxy-response");
|
|
205
|
-
function parseProxyResponse(socket) {
|
|
206
|
-
return new Promise((resolve, reject) => {
|
|
207
|
-
let buffersLength = 0;
|
|
208
|
-
const buffers = [];
|
|
209
|
-
function read() {
|
|
210
|
-
const b = socket.read();
|
|
211
|
-
if (b) ondata(b);
|
|
212
|
-
else socket.once("readable", read);
|
|
213
|
-
}
|
|
214
|
-
function cleanup() {
|
|
215
|
-
socket.removeListener("end", onend);
|
|
216
|
-
socket.removeListener("error", onerror);
|
|
217
|
-
socket.removeListener("readable", read);
|
|
218
|
-
}
|
|
219
|
-
function onend() {
|
|
220
|
-
cleanup();
|
|
221
|
-
debug("onend");
|
|
222
|
-
reject(/* @__PURE__ */ new Error("Proxy connection ended before receiving CONNECT response"));
|
|
223
|
-
}
|
|
224
|
-
function onerror(err) {
|
|
225
|
-
cleanup();
|
|
226
|
-
debug("onerror %o", err);
|
|
227
|
-
reject(err);
|
|
228
|
-
}
|
|
229
|
-
function ondata(b) {
|
|
230
|
-
buffers.push(b);
|
|
231
|
-
buffersLength += b.length;
|
|
232
|
-
const buffered = Buffer.concat(buffers, buffersLength);
|
|
233
|
-
const endOfHeaders = buffered.indexOf("\r\n\r\n");
|
|
234
|
-
if (endOfHeaders === -1) {
|
|
235
|
-
debug("have not received end of HTTP headers yet...");
|
|
236
|
-
read();
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
const headerParts = buffered.slice(0, endOfHeaders).toString("ascii").split("\r\n");
|
|
240
|
-
const firstLine = headerParts.shift();
|
|
241
|
-
if (!firstLine) {
|
|
242
|
-
socket.destroy();
|
|
243
|
-
return reject(/* @__PURE__ */ new Error("No header received from proxy CONNECT response"));
|
|
244
|
-
}
|
|
245
|
-
const firstLineParts = firstLine.split(" ");
|
|
246
|
-
const statusCode = +firstLineParts[1];
|
|
247
|
-
const statusText = firstLineParts.slice(2).join(" ");
|
|
248
|
-
const headers = {};
|
|
249
|
-
for (const header of headerParts) {
|
|
250
|
-
if (!header) continue;
|
|
251
|
-
const firstColon = header.indexOf(":");
|
|
252
|
-
if (firstColon === -1) {
|
|
253
|
-
socket.destroy();
|
|
254
|
-
return reject(/* @__PURE__ */ new Error(`Invalid header from proxy CONNECT response: "${header}"`));
|
|
255
|
-
}
|
|
256
|
-
const key = header.slice(0, firstColon).toLowerCase();
|
|
257
|
-
const value = header.slice(firstColon + 1).trimStart();
|
|
258
|
-
const current = headers[key];
|
|
259
|
-
if (typeof current === "string") headers[key] = [current, value];
|
|
260
|
-
else if (Array.isArray(current)) current.push(value);
|
|
261
|
-
else headers[key] = value;
|
|
262
|
-
}
|
|
263
|
-
debug("got proxy server response: %o %o", firstLine, headers);
|
|
264
|
-
cleanup();
|
|
265
|
-
resolve({
|
|
266
|
-
connect: {
|
|
267
|
-
statusCode,
|
|
268
|
-
statusText,
|
|
269
|
-
headers
|
|
270
|
-
},
|
|
271
|
-
buffered
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
socket.on("error", onerror);
|
|
275
|
-
socket.on("end", onend);
|
|
276
|
-
read();
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
exports.parseProxyResponse = parseProxyResponse;
|
|
280
|
-
}));
|
|
281
|
-
//#endregion
|
|
282
|
-
//#region ../../node_modules/.pnpm/https-proxy-agent@7.0.6/node_modules/https-proxy-agent/dist/index.js
|
|
283
|
-
var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
284
|
-
var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
|
|
285
|
-
if (k2 === void 0) k2 = k;
|
|
286
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
287
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
|
|
288
|
-
enumerable: true,
|
|
289
|
-
get: function() {
|
|
290
|
-
return m[k];
|
|
291
|
-
}
|
|
292
|
-
};
|
|
293
|
-
Object.defineProperty(o, k2, desc);
|
|
294
|
-
}) : (function(o, m, k, k2) {
|
|
295
|
-
if (k2 === void 0) k2 = k;
|
|
296
|
-
o[k2] = m[k];
|
|
297
|
-
}));
|
|
298
|
-
var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) {
|
|
299
|
-
Object.defineProperty(o, "default", {
|
|
300
|
-
enumerable: true,
|
|
301
|
-
value: v
|
|
302
|
-
});
|
|
303
|
-
}) : function(o, v) {
|
|
304
|
-
o["default"] = v;
|
|
305
|
-
});
|
|
306
|
-
var __importStar = exports && exports.__importStar || function(mod) {
|
|
307
|
-
if (mod && mod.__esModule) return mod;
|
|
308
|
-
var result = {};
|
|
309
|
-
if (mod != null) {
|
|
310
|
-
for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
311
|
-
}
|
|
312
|
-
__setModuleDefault(result, mod);
|
|
313
|
-
return result;
|
|
314
|
-
};
|
|
315
|
-
var __importDefault = exports && exports.__importDefault || function(mod) {
|
|
316
|
-
return mod && mod.__esModule ? mod : { "default": mod };
|
|
317
|
-
};
|
|
318
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
319
|
-
exports.HttpsProxyAgent = void 0;
|
|
320
|
-
const net = __importStar(__require("net"));
|
|
321
|
-
const tls = __importStar(__require("tls"));
|
|
322
|
-
const assert_1 = __importDefault(__require("assert"));
|
|
323
|
-
const debug_1 = __importDefault(require_src());
|
|
324
|
-
const agent_base_1 = require_dist$1();
|
|
325
|
-
const url_1 = __require("url");
|
|
326
|
-
const parse_proxy_response_1 = require_parse_proxy_response();
|
|
327
|
-
const debug = (0, debug_1.default)("https-proxy-agent");
|
|
328
|
-
const setServernameFromNonIpHost = (options) => {
|
|
329
|
-
if (options.servername === void 0 && options.host && !net.isIP(options.host)) return {
|
|
330
|
-
...options,
|
|
331
|
-
servername: options.host
|
|
332
|
-
};
|
|
333
|
-
return options;
|
|
334
|
-
};
|
|
335
|
-
/**
|
|
336
|
-
* The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to
|
|
337
|
-
* the specified "HTTP(s) proxy server" in order to proxy HTTPS requests.
|
|
338
|
-
*
|
|
339
|
-
* Outgoing HTTP requests are first tunneled through the proxy server using the
|
|
340
|
-
* `CONNECT` HTTP request method to establish a connection to the proxy server,
|
|
341
|
-
* and then the proxy server connects to the destination target and issues the
|
|
342
|
-
* HTTP request from the proxy server.
|
|
343
|
-
*
|
|
344
|
-
* `https:` requests have their socket connection upgraded to TLS once
|
|
345
|
-
* the connection to the proxy server has been established.
|
|
346
|
-
*/
|
|
347
|
-
var HttpsProxyAgent = class extends agent_base_1.Agent {
|
|
348
|
-
constructor(proxy, opts) {
|
|
349
|
-
super(opts);
|
|
350
|
-
this.options = { path: void 0 };
|
|
351
|
-
this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy;
|
|
352
|
-
this.proxyHeaders = opts?.headers ?? {};
|
|
353
|
-
debug("Creating new HttpsProxyAgent instance: %o", this.proxy.href);
|
|
354
|
-
const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, "");
|
|
355
|
-
const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80;
|
|
356
|
-
this.connectOpts = {
|
|
357
|
-
ALPNProtocols: ["http/1.1"],
|
|
358
|
-
...opts ? omit(opts, "headers") : null,
|
|
359
|
-
host,
|
|
360
|
-
port
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Called when the node-core HTTP client library is creating a
|
|
365
|
-
* new HTTP request.
|
|
366
|
-
*/
|
|
367
|
-
async connect(req, opts) {
|
|
368
|
-
const { proxy } = this;
|
|
369
|
-
if (!opts.host) throw new TypeError("No \"host\" provided");
|
|
370
|
-
let socket;
|
|
371
|
-
if (proxy.protocol === "https:") {
|
|
372
|
-
debug("Creating `tls.Socket`: %o", this.connectOpts);
|
|
373
|
-
socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));
|
|
374
|
-
} else {
|
|
375
|
-
debug("Creating `net.Socket`: %o", this.connectOpts);
|
|
376
|
-
socket = net.connect(this.connectOpts);
|
|
377
|
-
}
|
|
378
|
-
const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders };
|
|
379
|
-
const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;
|
|
380
|
-
let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r\n`;
|
|
381
|
-
if (proxy.username || proxy.password) {
|
|
382
|
-
const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;
|
|
383
|
-
headers["Proxy-Authorization"] = `Basic ${Buffer.from(auth).toString("base64")}`;
|
|
384
|
-
}
|
|
385
|
-
headers.Host = `${host}:${opts.port}`;
|
|
386
|
-
if (!headers["Proxy-Connection"]) headers["Proxy-Connection"] = this.keepAlive ? "Keep-Alive" : "close";
|
|
387
|
-
for (const name of Object.keys(headers)) payload += `${name}: ${headers[name]}\r\n`;
|
|
388
|
-
const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);
|
|
389
|
-
socket.write(`${payload}\r\n`);
|
|
390
|
-
const { connect, buffered } = await proxyResponsePromise;
|
|
391
|
-
req.emit("proxyConnect", connect);
|
|
392
|
-
this.emit("proxyConnect", connect, req);
|
|
393
|
-
if (connect.statusCode === 200) {
|
|
394
|
-
req.once("socket", resume);
|
|
395
|
-
if (opts.secureEndpoint) {
|
|
396
|
-
debug("Upgrading socket connection to TLS");
|
|
397
|
-
return tls.connect({
|
|
398
|
-
...omit(setServernameFromNonIpHost(opts), "host", "path", "port"),
|
|
399
|
-
socket
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
return socket;
|
|
403
|
-
}
|
|
404
|
-
socket.destroy();
|
|
405
|
-
const fakeSocket = new net.Socket({ writable: false });
|
|
406
|
-
fakeSocket.readable = true;
|
|
407
|
-
req.once("socket", (s) => {
|
|
408
|
-
debug("Replaying proxy buffer for failed request");
|
|
409
|
-
(0, assert_1.default)(s.listenerCount("data") > 0);
|
|
410
|
-
s.push(buffered);
|
|
411
|
-
s.push(null);
|
|
412
|
-
});
|
|
413
|
-
return fakeSocket;
|
|
414
|
-
}
|
|
415
|
-
};
|
|
416
|
-
HttpsProxyAgent.protocols = ["http", "https"];
|
|
417
|
-
exports.HttpsProxyAgent = HttpsProxyAgent;
|
|
418
|
-
function resume(socket) {
|
|
419
|
-
socket.resume();
|
|
420
|
-
}
|
|
421
|
-
function omit(obj, ...keys) {
|
|
422
|
-
const ret = {};
|
|
423
|
-
let key;
|
|
424
|
-
for (key in obj) if (!keys.includes(key)) ret[key] = obj[key];
|
|
425
|
-
return ret;
|
|
426
|
-
}
|
|
427
|
-
}));
|
|
428
|
-
//#endregion
|
|
429
|
-
export default require_dist();
|
|
430
|
-
export {};
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
CREATE TABLE "admin_users" (
|
|
2
|
-
"id" text PRIMARY KEY NOT NULL,
|
|
3
|
-
"username" text NOT NULL,
|
|
4
|
-
"password_hash" text NOT NULL,
|
|
5
|
-
"role" text DEFAULT 'admin' NOT NULL,
|
|
6
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
7
|
-
"last_login_at" timestamp with time zone,
|
|
8
|
-
CONSTRAINT "admin_users_username_unique" UNIQUE("username")
|
|
9
|
-
);
|
|
10
|
-
--> statement-breakpoint
|
|
11
|
-
CREATE TABLE "agent_tokens" (
|
|
12
|
-
"id" text PRIMARY KEY NOT NULL,
|
|
13
|
-
"agent_id" text NOT NULL,
|
|
14
|
-
"token_hash" text NOT NULL,
|
|
15
|
-
"name" text,
|
|
16
|
-
"expires_at" timestamp with time zone,
|
|
17
|
-
"revoked_at" timestamp with time zone,
|
|
18
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
19
|
-
"last_used_at" timestamp with time zone
|
|
20
|
-
);
|
|
21
|
-
--> statement-breakpoint
|
|
22
|
-
CREATE TABLE "agents" (
|
|
23
|
-
"id" text PRIMARY KEY NOT NULL,
|
|
24
|
-
"organization_id" text DEFAULT 'default' NOT NULL,
|
|
25
|
-
"type" text NOT NULL,
|
|
26
|
-
"display_name" text,
|
|
27
|
-
"inbox_id" text NOT NULL,
|
|
28
|
-
"status" text DEFAULT 'active' NOT NULL,
|
|
29
|
-
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
30
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
31
|
-
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
32
|
-
CONSTRAINT "agents_inbox_id_unique" UNIQUE("inbox_id")
|
|
33
|
-
);
|
|
34
|
-
--> statement-breakpoint
|
|
35
|
-
CREATE TABLE "chat_participants" (
|
|
36
|
-
"chat_id" text NOT NULL,
|
|
37
|
-
"agent_id" text NOT NULL,
|
|
38
|
-
"role" text DEFAULT 'member' NOT NULL,
|
|
39
|
-
"mode" text DEFAULT 'full' NOT NULL,
|
|
40
|
-
"joined_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
41
|
-
CONSTRAINT "chat_participants_chat_id_agent_id_pk" PRIMARY KEY("chat_id","agent_id")
|
|
42
|
-
);
|
|
43
|
-
--> statement-breakpoint
|
|
44
|
-
CREATE TABLE "chats" (
|
|
45
|
-
"id" text PRIMARY KEY NOT NULL,
|
|
46
|
-
"organization_id" text DEFAULT 'default' NOT NULL,
|
|
47
|
-
"type" text DEFAULT 'direct' NOT NULL,
|
|
48
|
-
"topic" text,
|
|
49
|
-
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
50
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
51
|
-
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
52
|
-
);
|
|
53
|
-
--> statement-breakpoint
|
|
54
|
-
CREATE TABLE "inbox_entries" (
|
|
55
|
-
"id" bigserial PRIMARY KEY NOT NULL,
|
|
56
|
-
"inbox_id" text NOT NULL,
|
|
57
|
-
"message_id" text NOT NULL,
|
|
58
|
-
"chat_id" text,
|
|
59
|
-
"status" text DEFAULT 'pending' NOT NULL,
|
|
60
|
-
"retry_count" integer DEFAULT 0 NOT NULL,
|
|
61
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
62
|
-
"delivered_at" timestamp with time zone,
|
|
63
|
-
"acked_at" timestamp with time zone,
|
|
64
|
-
CONSTRAINT "uq_inbox_delivery" UNIQUE("inbox_id","message_id","chat_id")
|
|
65
|
-
);
|
|
66
|
-
--> statement-breakpoint
|
|
67
|
-
CREATE TABLE "messages" (
|
|
68
|
-
"id" text PRIMARY KEY NOT NULL,
|
|
69
|
-
"chat_id" text NOT NULL,
|
|
70
|
-
"sender_id" text NOT NULL,
|
|
71
|
-
"format" text NOT NULL,
|
|
72
|
-
"content" jsonb NOT NULL,
|
|
73
|
-
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
74
|
-
"reply_to_inbox" text,
|
|
75
|
-
"reply_to_chat" text,
|
|
76
|
-
"in_reply_to" text,
|
|
77
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
78
|
-
);
|
|
79
|
-
--> statement-breakpoint
|
|
80
|
-
ALTER TABLE "agent_tokens" ADD CONSTRAINT "agent_tokens_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
81
|
-
ALTER TABLE "chat_participants" ADD CONSTRAINT "chat_participants_chat_id_chats_id_fk" FOREIGN KEY ("chat_id") REFERENCES "public"."chats"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
82
|
-
ALTER TABLE "chat_participants" ADD CONSTRAINT "chat_participants_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
83
|
-
ALTER TABLE "inbox_entries" ADD CONSTRAINT "inbox_entries_message_id_messages_id_fk" FOREIGN KEY ("message_id") REFERENCES "public"."messages"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
84
|
-
ALTER TABLE "messages" ADD CONSTRAINT "messages_chat_id_chats_id_fk" FOREIGN KEY ("chat_id") REFERENCES "public"."chats"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
85
|
-
ALTER TABLE "messages" ADD CONSTRAINT "messages_sender_id_agents_id_fk" FOREIGN KEY ("sender_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
86
|
-
CREATE INDEX "idx_agent_tokens_agent" ON "agent_tokens" USING btree ("agent_id");--> statement-breakpoint
|
|
87
|
-
CREATE INDEX "idx_agent_tokens_hash" ON "agent_tokens" USING btree ("token_hash");--> statement-breakpoint
|
|
88
|
-
CREATE INDEX "idx_agents_org" ON "agents" USING btree ("organization_id");--> statement-breakpoint
|
|
89
|
-
CREATE INDEX "idx_participants_agent" ON "chat_participants" USING btree ("agent_id");--> statement-breakpoint
|
|
90
|
-
CREATE INDEX "idx_inbox_pending" ON "inbox_entries" USING btree ("inbox_id","created_at");--> statement-breakpoint
|
|
91
|
-
CREATE INDEX "idx_messages_chat_time" ON "messages" USING btree ("chat_id","created_at");--> statement-breakpoint
|
|
92
|
-
CREATE INDEX "idx_messages_in_reply_to" ON "messages" USING btree ("in_reply_to");
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
-- v2 schema updates
|
|
2
|
-
|
|
3
|
-
-- Add new column to chats table
|
|
4
|
-
ALTER TABLE "chats" ADD COLUMN "parent_chat_id" text;
|
|
5
|
-
|
|
6
|
-
-- Agent presence table
|
|
7
|
-
CREATE TABLE "agent_presence" (
|
|
8
|
-
"agent_id" text PRIMARY KEY REFERENCES "agents"("id") ON DELETE CASCADE,
|
|
9
|
-
"status" text NOT NULL DEFAULT 'offline',
|
|
10
|
-
"instance_id" text,
|
|
11
|
-
"connected_at" timestamptz,
|
|
12
|
-
"last_seen_at" timestamptz NOT NULL DEFAULT NOW()
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
-- Server instances table
|
|
16
|
-
CREATE TABLE "server_instances" (
|
|
17
|
-
"instance_id" text PRIMARY KEY,
|
|
18
|
-
"last_heartbeat" timestamptz NOT NULL DEFAULT NOW()
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
-- System configs table
|
|
22
|
-
CREATE TABLE "system_configs" (
|
|
23
|
-
"key" text PRIMARY KEY,
|
|
24
|
-
"value" jsonb NOT NULL,
|
|
25
|
-
"updated_at" timestamptz NOT NULL DEFAULT NOW()
|
|
26
|
-
);
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
-- Add lifecycle_policy column to chats
|
|
2
|
-
ALTER TABLE "chats" ADD COLUMN "lifecycle_policy" text DEFAULT 'persistent';
|
|
3
|
-
|
|
4
|
-
--> statement-breakpoint
|
|
5
|
-
-- Adapter configs: Bot credentials for external platform adapters
|
|
6
|
-
CREATE TABLE "adapter_configs" (
|
|
7
|
-
"id" serial PRIMARY KEY NOT NULL,
|
|
8
|
-
"platform" text NOT NULL,
|
|
9
|
-
"agent_id" text,
|
|
10
|
-
"credentials" jsonb NOT NULL,
|
|
11
|
-
"status" text DEFAULT 'active' NOT NULL,
|
|
12
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
13
|
-
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
--> statement-breakpoint
|
|
17
|
-
-- Adapter chat mappings: internal Chat <-> external IM channel
|
|
18
|
-
CREATE TABLE "adapter_chat_mappings" (
|
|
19
|
-
"id" serial PRIMARY KEY NOT NULL,
|
|
20
|
-
"platform" text NOT NULL,
|
|
21
|
-
"external_channel_id" text NOT NULL,
|
|
22
|
-
"chat_id" text NOT NULL,
|
|
23
|
-
"thread_id" text,
|
|
24
|
-
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
25
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
26
|
-
);
|
|
27
|
-
--> statement-breakpoint
|
|
28
|
-
CREATE UNIQUE INDEX "uq_adapter_chat_mapping" ON "adapter_chat_mappings" ("platform", "external_channel_id", COALESCE("thread_id", ''));
|
|
29
|
-
|
|
30
|
-
--> statement-breakpoint
|
|
31
|
-
-- Adapter agent mappings: external user identity <-> internal Agent
|
|
32
|
-
CREATE TABLE "adapter_agent_mappings" (
|
|
33
|
-
"id" serial PRIMARY KEY NOT NULL,
|
|
34
|
-
"platform" text NOT NULL,
|
|
35
|
-
"external_user_id" text NOT NULL,
|
|
36
|
-
"agent_id" text NOT NULL,
|
|
37
|
-
"bound_via" text,
|
|
38
|
-
"display_name" text,
|
|
39
|
-
"metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
40
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
41
|
-
CONSTRAINT "uq_adapter_agent_mapping" UNIQUE("platform","external_user_id")
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
--> statement-breakpoint
|
|
45
|
-
-- Adapter message references: internal Message <-> external message ID
|
|
46
|
-
CREATE TABLE "adapter_message_references" (
|
|
47
|
-
"id" serial PRIMARY KEY NOT NULL,
|
|
48
|
-
"message_id" text NOT NULL,
|
|
49
|
-
"platform" text NOT NULL,
|
|
50
|
-
"external_message_id" text NOT NULL,
|
|
51
|
-
"external_channel_id" text NOT NULL,
|
|
52
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
53
|
-
CONSTRAINT "uq_adapter_message_ref" UNIQUE("message_id","platform")
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
--> statement-breakpoint
|
|
57
|
-
-- Foreign keys for adapter tables
|
|
58
|
-
ALTER TABLE "adapter_configs" ADD CONSTRAINT "adapter_configs_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;
|
|
59
|
-
--> statement-breakpoint
|
|
60
|
-
ALTER TABLE "adapter_chat_mappings" ADD CONSTRAINT "adapter_chat_mappings_chat_id_chats_id_fk" FOREIGN KEY ("chat_id") REFERENCES "public"."chats"("id") ON DELETE no action ON UPDATE no action;
|
|
61
|
-
--> statement-breakpoint
|
|
62
|
-
ALTER TABLE "adapter_agent_mappings" ADD CONSTRAINT "adapter_agent_mappings_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;
|
|
63
|
-
--> statement-breakpoint
|
|
64
|
-
ALTER TABLE "adapter_message_references" ADD CONSTRAINT "adapter_message_references_message_id_messages_id_fk" FOREIGN KEY ("message_id") REFERENCES "public"."messages"("id") ON DELETE no action ON UPDATE no action;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
-- Webhook event deduplication table
|
|
2
|
-
CREATE TABLE IF NOT EXISTS "processed_events" (
|
|
3
|
-
"id" serial PRIMARY KEY NOT NULL,
|
|
4
|
-
"event_id" text NOT NULL,
|
|
5
|
-
"platform" text NOT NULL,
|
|
6
|
-
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
7
|
-
CONSTRAINT "uq_processed_event" UNIQUE("event_id","platform")
|
|
8
|
-
);
|
|
9
|
-
|
|
10
|
-
-- Performance indexes for adapter mapping lookups
|
|
11
|
-
CREATE INDEX IF NOT EXISTS "idx_adapter_chat_mappings_lookup"
|
|
12
|
-
ON "adapter_chat_mappings" ("platform", "external_channel_id");
|
|
13
|
-
|
|
14
|
-
CREATE INDEX IF NOT EXISTS "idx_adapter_agent_mappings_lookup"
|
|
15
|
-
ON "adapter_agent_mappings" ("platform", "external_user_id");
|
|
16
|
-
|
|
17
|
-
CREATE INDEX IF NOT EXISTS "idx_adapter_message_refs_lookup"
|
|
18
|
-
ON "adapter_message_references" ("platform", "external_message_id");
|
|
19
|
-
|
|
20
|
-
CREATE INDEX IF NOT EXISTS "idx_adapter_configs_active"
|
|
21
|
-
ON "adapter_configs" ("platform") WHERE "status" = 'active';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
-- Adapter refactor: agentId required + unique constraint per design doc
|
|
2
|
-
-- Clean up any rows with NULL agent_id before adding NOT NULL constraint
|
|
3
|
-
DELETE FROM "adapter_configs" WHERE "agent_id" IS NULL;
|
|
4
|
-
|
|
5
|
-
--> statement-breakpoint
|
|
6
|
-
ALTER TABLE "adapter_configs" ALTER COLUMN "agent_id" SET NOT NULL;
|
|
7
|
-
|
|
8
|
-
--> statement-breakpoint
|
|
9
|
-
ALTER TABLE "adapter_configs" ADD CONSTRAINT "uq_adapter_configs_agent_platform" UNIQUE("agent_id", "platform");
|
|
10
|
-
|
|
11
|
-
--> statement-breakpoint
|
|
12
|
-
-- Drop messages.sender_id FK — agents may be soft-deleted while messages are preserved
|
|
13
|
-
ALTER TABLE "messages" DROP CONSTRAINT IF EXISTS "messages_sender_id_agents_id_fk";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "agents" ADD COLUMN "delegate_mention" text;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ALTER TABLE "agents" ADD COLUMN "tree_path" text;
|