@pleaseai/agent 0.1.18 → 0.1.19
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/b9184376-213c-4350-b5c2-fff46a3d287b.json +1 -0
- package/.output/server/chunks/build/Badge-BnQthhyg.mjs +1 -1
- package/.output/server/chunks/build/_id_-B-peNi7y.mjs +1 -0
- package/.output/server/chunks/build/_identifier_-u8aQI-B5.mjs +1 -0
- package/.output/server/chunks/build/dashboard-DRFqbhzu.mjs +1 -0
- package/.output/server/chunks/build/error-404-Boq1zV4r.mjs +1 -0
- package/.output/server/chunks/build/error-500-BAbnx-7I.mjs +1 -0
- package/.output/server/chunks/build/index-BAy5ojFe.mjs +1 -0
- package/.output/server/chunks/build/login-DPXKXUwG.mjs +1 -0
- package/.output/server/chunks/build/server.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/_...all_.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/_...all_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/v1/_identifier_.get.mjs +1 -0
- package/.output/server/chunks/routes/api/v1/_identifier_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/v1/refresh.post.mjs +1 -0
- package/.output/server/chunks/routes/api/v1/refresh.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/v1/sessions/_sessionId/messages.get.mjs +1 -0
- package/.output/server/chunks/routes/api/v1/sessions/_sessionId/messages.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/v1/state.get.mjs +1 -0
- package/.output/server/chunks/routes/api/v1/state.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/webhooks/asana.post.mjs +72 -0
- package/.output/server/chunks/routes/api/webhooks/asana.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/webhooks/github.post.mjs +2 -1
- package/.output/server/chunks/routes/api/webhooks/github.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/webhooks/slack.post.mjs +2 -1
- package/.output/server/chunks/routes/api/webhooks/slack.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +126 -67
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/chat-adapter-asana/dist/index.js +312 -0
- package/.output/server/node_modules/chat-adapter-asana/package.json +66 -0
- package/.output/server/package.json +2 -1
- package/dist/index.js +2 -1
- package/package.json +2 -1
- package/.output/public/_nuxt/builds/meta/abed174c-7c58-4767-9723-7e8af63d9c0f.json +0 -1
package/.output/nitro.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"b9184376-213c-4350-b5c2-fff46a3d287b","timestamp":1774082743581}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"b9184376-213c-4350-b5c2-fff46a3d287b","timestamp":1774082743581,"prerendered":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { M as createContext, v as vueExports, A as useLocale, am as useStorage, y as useForwardProps, a2 as reactiveOmit, g as useAppConfig, h as useComponentUI, t as tv, s as serverRenderer_cjs_prodExports, e as _sfc_main$8, P as Primitive, o as useFieldGroup, p as useComponentIcons, q as _sfc_main$d, r as _sfc_main$b, ac as useNuxtApp, al as useRequestEvent } from './server.mjs';
|
|
2
|
-
import { G as klona, W as parse,
|
|
2
|
+
import { G as klona, W as parse, k as getRequestHeader, V as isEqual, X as setCookie, Y as getCookie, Z as deleteCookie } from '../../index.mjs';
|
|
3
3
|
|
|
4
4
|
function parseCookieValue(value) {
|
|
5
5
|
if (value === "undefined") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_...all_.mjs","sources":["../../../../../../server/api/auth/[...all].ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_...all_.mjs","sources":["../../../../../../server/api/auth/[...all].ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAAA,kBAAA,CAAA,CAAA,KAAA,KAAA;AACA,EAAA,MAAA,OAAA,OAAA,EAAA;AACA,EAAA,OAAA,IAAA,CAAA,OAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_identifier_.get.mjs","sources":["../../../../../../server/api/v1/[identifier].get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_identifier_.get.mjs","sources":["../../../../../../server/api/v1/[identifier].get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.post.mjs","sources":["../../../../../../server/api/v1/refresh.post.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"refresh.post.mjs","sources":["../../../../../../server/api/v1/refresh.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qBAAA,kBAAA,CAAA,CAAA,KAAA,KAAA;AACA,EAAA,MAAA,YAAA,GAAA,gBAAA,CAAA;AACA,EAAA,YAAA,CAAA,cAAA,EAAA;AAEA,EAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,EAAA,OAAA;AAAA,IACA,MAAA,EAAA,IAAA;AAAA,IACA,YAAA,EAAA,iBAAA,IAAA,IAAA,EAAA,EAAA,WAAA,EAAA;AAAA,IACA,UAAA,EAAA,CAAA,MAAA,EAAA,WAAA;AAAA,GACA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.get.mjs","sources":["../../../../../../../../server/api/v1/sessions/[sessionId]/messages.get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.get.mjs","sources":["../../../../../../../../server/api/v1/sessions/[sessionId]/messages.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,YAAA,GAAA,gBAAA,CAAA;AACA,EAAA,MAAA,SAAA,GAAA,CAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,WAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAEA,EAAA,IAAA,CAAA,SAAA,IAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,EAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,aAAA,EAAA,sBAAA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,MAAA,GAAA,aAAA,SAAA,EAAA;AACA,EAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,EAAA,MAAA,KAAA,GAAA,iBAAA,OAAA,KAAA,CAAA,UAAA,QAAA,GAAA,KAAA,CAAA,QAAA,IAAA,CAAA;AACA,EAAA,MAAA,MAAA,GAAA,iBAAA,OAAA,KAAA,CAAA,WAAA,QAAA,GAAA,KAAA,CAAA,SAAA,IAAA,CAAA;AAEA,EAAA,IAAA;AACA,IAAA,OAAA,MAAA,qBAAA,SAAA,EAAA,MAAA,CAAA,UAAA,IAAA,EAAA,EAAA,KAAA,EAAA,MAAA,EAAA,CAAA;AAAA,EACA,SACA,GAAA,EAAA;AACA,IAAA,MAAA,IAAA,GAAA,OAAA,OAAA,GAAA,KAAA,YAAA,MAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,MAAA;AACA,IAAA,MAAA,MAAA,GAAA,YAAA,KAAA,GAAA,GAAA,CAAA,OAAA,GAAA,OAAA,GAAA,CAAA;AACA,IAAA,IAAA,SAAA,QAAA,IAAA,GAAA,CAAA,WAAA,EAAA,CAAA,SAAA,WAAA,CAAA;AACA,MAAA,OAAA,EAAA;AACA,IAAA,OAAA,CAAA,KAAA,CAAA,2CAAA,GAAA,CAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,aAAA,EAAA,mCAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.get.mjs","sources":["../../../../../../server/api/v1/state.get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.get.mjs","sources":["../../../../../../server/api/v1/state.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,kBAAA,kBAAA,CAAA,CAAA,KAAA,KAAA;AACA,EAAA,MAAA,YAAA,GAAA,gBAAA,CAAA;AACA,EAAA,MAAA,KAAA,GAAA,aAAA,QAAA,EAAA;AAEA,EAAA,MAAA,OAAA,GAAA,KAAA,CAAA,IAAA,CAAA,KAAA,CAAA,OAAA,CAAA,QAAA,EAAA,CAAA,CAAA,KAAA,mBAAA,CAAA,CAAA,CAAA,CAAA;AACA,EAAA,MAAA,QAAA,GAAA,KAAA,CAAA,IAAA,CAAA,KAAA,CAAA,cAAA,CAAA,QAAA,EAAA,CAAA,CAAA,KAAA,iBAAA,CAAA,CAAA,CAAA,CAAA;AACA,EAAA,MAAA,kBAAA,GAAA,0BAAA,KAAA,CAAA;AAEA,EAAA,OAAA;AAAA,IACA,YAAA,EAAA,iBAAA,IAAA,IAAA,EAAA,EAAA,WAAA,EAAA;AAAA,IACA,MAAA,EAAA;AAAA,MACA,SAAA,OAAA,CAAA,MAAA;AAAA,MACA,UAAA,QAAA,CAAA;AAAA,KACA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,EAAA;AAAA,MACA,YAAA,EAAA,MAAA,YAAA,CAAA,YAAA;AAAA,MACA,aAAA,EAAA,MAAA,YAAA,CAAA,aAAA;AAAA,MACA,YAAA,EAAA,MAAA,YAAA,CAAA,YAAA;AAAA,MACA,eAAA,EAAA,KAAA,CAAA,YAAA,CAAA,eAAA,GAAA;AAAA,KACA;AAAA,IACA,aAAA,KAAA,CAAA;AAAA,GACA;AACA,CAAA,CAAA;AAEA,SAAA,oBAAA,CAAA,EAAA;;AACA,EAAA,OAAA;AAAA,IACA,QAAA,EAAA,EAAA,KAAA,CAAA,EAAA;AAAA,IACA,kBAAA,CAAA,CAAA,UAAA;AAAA,IACA,KAAA,EAAA,EAAA,KAAA,CAAA,KAAA;AAAA,IACA,YAAA,CAAA,CAAA,UAAA;AAAA,IACA,YAAA,CAAA,CAAA,UAAA;AAAA,IACA,YAAA,CAAA,CAAA,gBAAA;AAAA,IACA,cAAA,CAAA,CAAA,kBAAA;AAAA,IACA,UAAA,EAAA,CAAA,CAAA,UAAA,CAAA,WAAA,EAAA;AAAA,IACA,aAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAA,oBAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,kBAAA,IAAA,GAAA,EAAA,GAAA,IAAA;AAAA,IACA,MAAA,EAAA;AAAA,MACA,cAAA,CAAA,CAAA,kBAAA;AAAA,MACA,eAAA,CAAA,CAAA,mBAAA;AAAA,MACA,cAAA,CAAA,CAAA;AAAA;AACA,GACA;AACA;AAEA,SAAA,kBAAA,CAAA,EAAA;AACA,EAAA,OAAA;AAAA,IACA,UAAA,CAAA,CAAA,QAAA;AAAA,IACA,kBAAA,CAAA,CAAA,UAAA;AAAA,IACA,SAAA,CAAA,CAAA,OAAA;AAAA,IACA,QAAA,IAAA,IAAA,CAAA,CAAA,CAAA,SAAA,EAAA,WAAA,EAAA;AAAA,IACA,OAAA,CAAA,CAAA;AAAA,GACA;AACA;AAEA,SAAA,0BAAA,KAAA,EAAA;AACA,EAAA,MAAA,GAAA,GAAA,KAAA,GAAA,EAAA;AACA,EAAA,IAAA,KAAA,GAAA,CAAA;AACA,EAAA,KAAA,MAAA,KAAA,IAAA,KAAA,CAAA,OAAA,CAAA,MAAA,EAAA,EAAA;AACA,IAAA,KAAA,IAAA,CAAA,GAAA,GAAA,KAAA,CAAA,UAAA,CAAA,OAAA,EAAA,IAAA,GAAA;AAAA,EACA;AACA,EAAA,OAAA,KAAA;AACA;;;;"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { d as defineEventHandler, s as setResponseStatus, t as toWebRequest, e as setResponseHeader, h as useNitroApp, j as createLogger } from '../../../../index.mjs';
|
|
2
|
+
import '@anthropic-ai/claude-agent-sdk';
|
|
3
|
+
import '@octokit/webhooks';
|
|
4
|
+
import 'node:events';
|
|
5
|
+
import 'node:buffer';
|
|
6
|
+
import 'node:fs';
|
|
7
|
+
import 'node:path';
|
|
8
|
+
import 'node:crypto';
|
|
9
|
+
import 'node:process';
|
|
10
|
+
import 'consola';
|
|
11
|
+
import '@octokit/graphql';
|
|
12
|
+
import 'zod';
|
|
13
|
+
import '@octokit/auth-app';
|
|
14
|
+
import 'node:os';
|
|
15
|
+
import '@libsql/client';
|
|
16
|
+
import 'liquidjs';
|
|
17
|
+
import 'js-yaml';
|
|
18
|
+
import 'node:child_process';
|
|
19
|
+
import '@chat-adapter/github';
|
|
20
|
+
import '@chat-adapter/slack';
|
|
21
|
+
import 'chat';
|
|
22
|
+
import 'chat-adapter-asana';
|
|
23
|
+
import 'better-auth';
|
|
24
|
+
import 'better-auth/plugins';
|
|
25
|
+
import 'bun:sqlite';
|
|
26
|
+
import 'better-auth/db/migration';
|
|
27
|
+
import 'node:url';
|
|
28
|
+
import '@iconify/utils';
|
|
29
|
+
|
|
30
|
+
const log = createLogger("webhook:asana");
|
|
31
|
+
const asana_post = defineEventHandler(async (event) => {
|
|
32
|
+
const nitroApp = useNitroApp();
|
|
33
|
+
const chatBot = nitroApp.chatBot;
|
|
34
|
+
if (!chatBot) {
|
|
35
|
+
setResponseStatus(event, 503);
|
|
36
|
+
return { error: { code: "not_initialized", message: "Chat bot not initialized" } };
|
|
37
|
+
}
|
|
38
|
+
const handler = chatBot.webhooks.asana;
|
|
39
|
+
if (!handler) {
|
|
40
|
+
setResponseStatus(event, 404);
|
|
41
|
+
return { error: { code: "asana_not_configured", message: "Asana adapter not configured" } };
|
|
42
|
+
}
|
|
43
|
+
const request = toWebRequest(event);
|
|
44
|
+
try {
|
|
45
|
+
const response = await handler(request, {
|
|
46
|
+
waitUntil: (promise) => {
|
|
47
|
+
promise.catch((err) => log.error("waitUntil rejected:", err));
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
setResponseStatus(event, response.status);
|
|
51
|
+
for (const [key, value] of response.headers.entries()) {
|
|
52
|
+
setResponseHeader(event, key, value);
|
|
53
|
+
}
|
|
54
|
+
const text = await response.text();
|
|
55
|
+
if (!text) {
|
|
56
|
+
return { accepted: true };
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
return JSON.parse(text);
|
|
60
|
+
} catch {
|
|
61
|
+
log.warn("asana webhook response is not JSON:", { status: response.status, body: text.slice(0, 200) });
|
|
62
|
+
return text;
|
|
63
|
+
}
|
|
64
|
+
} catch (err) {
|
|
65
|
+
log.error("asana webhook handler error:", err);
|
|
66
|
+
setResponseStatus(event, 500);
|
|
67
|
+
return { error: { code: "internal_error", message: "Asana webhook processing failed" } };
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export { asana_post as default };
|
|
72
|
+
//# sourceMappingURL=asana.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asana.post.mjs","sources":["../../../../../../server/api/webhooks/asana.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAA,GAAA,GAAA,aAAA,eAAA,CAAA;AAEA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,WAAA,WAAA,EAAA;AACA,EAAA,MAAA,UAAA,QAAA,CAAA,OAAA;AAEA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,IAAA,OAAA,EAAA,KAAA,EAAA,EAAA,MAAA,iBAAA,EAAA,OAAA,EAAA,4BAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,QAAA,QAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,IAAA,OAAA,EAAA,KAAA,EAAA,EAAA,MAAA,sBAAA,EAAA,OAAA,EAAA,gCAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,aAAA,KAAA,CAAA;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,QAAA,GAAA,MAAA,OAAA,CAAA,OAAA,EAAA;AAAA,MACA,SAAA,EAAA,CAAA,OAAA,KAAA;AACA,QAAA,OAAA,CAAA,MAAA,CAAA,GAAA,KAAA,GAAA,CAAA,KAAA,CAAA,qBAAA,EAAA,GAAA,CAAA,CAAA;AAAA,MACA;AAAA,KACA,CAAA;AAEA,IAAA,iBAAA,CAAA,KAAA,EAAA,SAAA,MAAA,CAAA;AACA,IAAA,KAAA,MAAA,CAAA,GAAA,EAAA,KAAA,KAAA,QAAA,CAAA,OAAA,CAAA,SAAA,EAAA;AACA,MAAA,iBAAA,CAAA,KAAA,EAAA,KAAA,KAAA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,IAAA,EAAA;AACA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,OAAA,EAAA,UAAA,IAAA,EAAA;AAAA,IACA;AACA,IAAA,IAAA;AACA,MAAA,OAAA,IAAA,CAAA,MAAA,IAAA,CAAA;AAAA,IACA,CAAA,CAAA,MACA;AACA,MAAA,GAAA,CAAA,IAAA,CAAA,qCAAA,EAAA,EAAA,MAAA,EAAA,QAAA,CAAA,MAAA,EAAA,IAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA;AACA,MAAA,OAAA,IAAA;AAAA,IACA;AAAA,EACA,SACA,GAAA,EAAA;AACA,IAAA,GAAA,CAAA,KAAA,CAAA,gCAAA,GAAA,CAAA;AACA,IAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,IAAA,OAAA,EAAA,KAAA,EAAA,EAAA,MAAA,gBAAA,EAAA,OAAA,EAAA,mCAAA,EAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineEventHandler, a as useOrchestrator, t as toWebRequest,
|
|
1
|
+
import { d as defineEventHandler, a as useOrchestrator, t as toWebRequest, k as getRequestHeader, s as setResponseStatus, l as shouldHandleComment, h as useNitroApp, m as handleIssueCommentMention, n as handleWebhook, e as setResponseHeader, o as createVerify, j as createLogger } from '../../../../index.mjs';
|
|
2
2
|
import process from 'node:process';
|
|
3
3
|
import '@anthropic-ai/claude-agent-sdk';
|
|
4
4
|
import '@octokit/webhooks';
|
|
@@ -19,6 +19,7 @@ import 'node:child_process';
|
|
|
19
19
|
import '@chat-adapter/github';
|
|
20
20
|
import '@chat-adapter/slack';
|
|
21
21
|
import 'chat';
|
|
22
|
+
import 'chat-adapter-asana';
|
|
22
23
|
import 'better-auth';
|
|
23
24
|
import 'better-auth/plugins';
|
|
24
25
|
import 'bun:sqlite';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.post.mjs","sources":["../../../../../../server/api/webhooks/github.post.ts"],"names":["verify","body","_a"],"mappings":"
|
|
1
|
+
{"version":3,"file":"github.post.mjs","sources":["../../../../../../server/api/webhooks/github.post.ts"],"names":["verify","body","_a"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineEventHandler, s as setResponseStatus, t as toWebRequest,
|
|
1
|
+
import { d as defineEventHandler, s as setResponseStatus, t as toWebRequest, e as setResponseHeader, h as useNitroApp, j as createLogger } from '../../../../index.mjs';
|
|
2
2
|
import '@anthropic-ai/claude-agent-sdk';
|
|
3
3
|
import '@octokit/webhooks';
|
|
4
4
|
import 'node:events';
|
|
@@ -19,6 +19,7 @@ import 'node:child_process';
|
|
|
19
19
|
import '@chat-adapter/github';
|
|
20
20
|
import '@chat-adapter/slack';
|
|
21
21
|
import 'chat';
|
|
22
|
+
import 'chat-adapter-asana';
|
|
22
23
|
import 'better-auth';
|
|
23
24
|
import 'better-auth/plugins';
|
|
24
25
|
import 'bun:sqlite';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.post.mjs","sources":["../../../../../../server/api/webhooks/slack.post.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slack.post.mjs","sources":["../../../../../../server/api/webhooks/slack.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAA,GAAA,GAAA,aAAA,eAAA,CAAA;AAEA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,WAAA,WAAA,EAAA;AACA,EAAA,MAAA,UAAA,QAAA,CAAA,OAAA;AAEA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,IAAA,OAAA,EAAA,KAAA,EAAA,EAAA,MAAA,iBAAA,EAAA,OAAA,EAAA,4BAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,QAAA,QAAA,CAAA,KAAA;AACA,EAAA,IAAA,CAAA,OAAA,EAAA;AACA,IAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,IAAA,OAAA,EAAA,KAAA,EAAA,EAAA,MAAA,sBAAA,EAAA,OAAA,EAAA,gCAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,aAAA,KAAA,CAAA;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,QAAA,GAAA,MAAA,OAAA,CAAA,OAAA,EAAA;AAAA,MACA,SAAA,EAAA,CAAA,OAAA,KAAA;AACA,QAAA,OAAA,CAAA,MAAA,CAAA,GAAA,KAAA,GAAA,CAAA,KAAA,CAAA,qBAAA,EAAA,GAAA,CAAA,CAAA;AAAA,MACA;AAAA,KACA,CAAA;AAEA,IAAA,iBAAA,CAAA,KAAA,EAAA,SAAA,MAAA,CAAA;AACA,IAAA,KAAA,MAAA,CAAA,GAAA,EAAA,KAAA,KAAA,QAAA,CAAA,OAAA,CAAA,SAAA,EAAA;AACA,MAAA,iBAAA,CAAA,KAAA,EAAA,KAAA,KAAA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,IAAA,EAAA;AACA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,OAAA,EAAA,UAAA,IAAA,EAAA;AAAA,IACA;AACA,IAAA,IAAA;AACA,MAAA,OAAA,IAAA,CAAA,MAAA,IAAA,CAAA;AAAA,IACA,CAAA,CAAA,MACA;AACA,MAAA,GAAA,CAAA,IAAA,CAAA,qCAAA,EAAA,EAAA,MAAA,EAAA,QAAA,CAAA,MAAA,EAAA,IAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA;AACA,MAAA,OAAA,IAAA;AAAA,IACA;AAAA,EACA,SACA,GAAA,EAAA;AACA,IAAA,GAAA,CAAA,KAAA,CAAA,gCAAA,GAAA,CAAA;AACA,IAAA,iBAAA,CAAA,OAAA,GAAA,CAAA;AACA,IAAA,OAAA,EAAA,KAAA,EAAA,EAAA,MAAA,gBAAA,EAAA,OAAA,EAAA,mCAAA,EAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime';
|
|
2
|
-
import { q as buildAssetsURL, r as useRuntimeConfig, v as getResponseStatusText, x as getResponseStatus, y as defineRenderHandler, z as publicAssetsURL, b as getQuery, c as createError, A as destr, B as getRouteRules, C as joinURL,
|
|
2
|
+
import { q as buildAssetsURL, r as useRuntimeConfig, v as getResponseStatusText, x as getResponseStatus, y as defineRenderHandler, z as publicAssetsURL, b as getQuery, c as createError, A as destr, B as getRouteRules, C as joinURL, h as useNitroApp } from '../../index.mjs';
|
|
3
3
|
import { renderToString } from 'vue/server-renderer';
|
|
4
4
|
import { createHead as createHead$1, propsToString, renderSSRHead } from 'unhead/server';
|
|
5
5
|
import { stringify, uneval } from 'devalue';
|
package/.output/server/index.mjs
CHANGED
|
@@ -18,6 +18,7 @@ import { spawnSync } from 'node:child_process';
|
|
|
18
18
|
import { createGitHubAdapter as createGitHubAdapter$1 } from '@chat-adapter/github';
|
|
19
19
|
import { createSlackAdapter } from '@chat-adapter/slack';
|
|
20
20
|
import { Chat } from 'chat';
|
|
21
|
+
import { createAsanaAdapter as createAsanaAdapter$1 } from 'chat-adapter-asana';
|
|
21
22
|
import { betterAuth } from 'better-auth';
|
|
22
23
|
import { admin, username } from 'better-auth/plugins';
|
|
23
24
|
import { Database } from 'bun:sqlite';
|
|
@@ -4615,7 +4616,7 @@ function _expandFromEnv(value) {
|
|
|
4615
4616
|
const _inlineRuntimeConfig = {
|
|
4616
4617
|
"app": {
|
|
4617
4618
|
"baseURL": "/",
|
|
4618
|
-
"buildId": "
|
|
4619
|
+
"buildId": "b9184376-213c-4350-b5c2-fff46a3d287b",
|
|
4619
4620
|
"buildAssetsDir": "/_nuxt/",
|
|
4620
4621
|
"cdnURL": ""
|
|
4621
4622
|
},
|
|
@@ -5730,7 +5731,8 @@ function buildPlatformsConfig(raw) {
|
|
|
5730
5731
|
bot_username: resolveEnvValue(
|
|
5731
5732
|
stringValue(sec.bot_username),
|
|
5732
5733
|
(_a = process$1.env.CHAT_BOT_USERNAME) != null ? _a : process$1.env.GITHUB_BOT_USERNAME
|
|
5733
|
-
)
|
|
5734
|
+
),
|
|
5735
|
+
webhook_secret: resolveEnvValue(stringValue(sec.webhook_secret), process$1.env.ASANA_WEBHOOK_SECRET)
|
|
5734
5736
|
};
|
|
5735
5737
|
} else {
|
|
5736
5738
|
result[key] = {
|
|
@@ -5843,7 +5845,7 @@ function buildAuthConfig(auth) {
|
|
|
5843
5845
|
client_secret: resolveEnvValue(stringValue(github.client_secret), process$1.env.AUTH_GITHUB_CLIENT_SECRET)
|
|
5844
5846
|
},
|
|
5845
5847
|
admin: {
|
|
5846
|
-
|
|
5848
|
+
email: resolveEnvValue(stringValue(admin.email), process$1.env.AUTH_ADMIN_EMAIL),
|
|
5847
5849
|
password: resolveEnvValue(stringValue(admin.password), process$1.env.AUTH_ADMIN_PASSWORD)
|
|
5848
5850
|
}
|
|
5849
5851
|
};
|
|
@@ -7253,16 +7255,17 @@ function createAsanaAdapter(project, platform) {
|
|
|
7253
7255
|
"Content-Type": "application/json"
|
|
7254
7256
|
};
|
|
7255
7257
|
}
|
|
7256
|
-
async function
|
|
7258
|
+
async function request(url, init) {
|
|
7257
7259
|
let response;
|
|
7260
|
+
const ctrl = new AbortController();
|
|
7261
|
+
const timeout = setTimeout(() => ctrl.abort(), NETWORK_TIMEOUT_MS);
|
|
7258
7262
|
try {
|
|
7259
|
-
|
|
7260
|
-
const timeout = setTimeout(() => ctrl.abort(), NETWORK_TIMEOUT_MS);
|
|
7261
|
-
response = await fetch(url, { headers: headers(), signal: ctrl.signal });
|
|
7262
|
-
clearTimeout(timeout);
|
|
7263
|
+
response = await fetch(url, { headers: headers(), signal: ctrl.signal, ...init });
|
|
7263
7264
|
} catch (cause) {
|
|
7265
|
+
clearTimeout(timeout);
|
|
7264
7266
|
return { code: "asana_api_request", cause };
|
|
7265
7267
|
}
|
|
7268
|
+
clearTimeout(timeout);
|
|
7266
7269
|
if (!response.ok) {
|
|
7267
7270
|
const body2 = await response.json().catch(() => null);
|
|
7268
7271
|
return { code: "asana_api_status", status: response.status, body: body2 };
|
|
@@ -7270,17 +7273,29 @@ function createAsanaAdapter(project, platform) {
|
|
|
7270
7273
|
const body = await response.json().catch(() => null);
|
|
7271
7274
|
return { data: body };
|
|
7272
7275
|
}
|
|
7273
|
-
|
|
7274
|
-
|
|
7276
|
+
function fetchJson(url) {
|
|
7277
|
+
return request(url);
|
|
7278
|
+
}
|
|
7279
|
+
function postJson(url, payload) {
|
|
7280
|
+
return request(url, { method: "POST", body: JSON.stringify(payload) });
|
|
7281
|
+
}
|
|
7282
|
+
async function fetchSections() {
|
|
7283
|
+
const result = await fetchJson(
|
|
7275
7284
|
`${endpoint}/projects/${projectGid}/sections?opt_fields=name,gid`
|
|
7276
7285
|
);
|
|
7277
|
-
if ("code" in
|
|
7278
|
-
return
|
|
7279
|
-
const
|
|
7280
|
-
if (!Array.isArray(
|
|
7281
|
-
return { code: "asana_unknown_payload", payload
|
|
7286
|
+
if ("code" in result)
|
|
7287
|
+
return result;
|
|
7288
|
+
const payload = result.data;
|
|
7289
|
+
if (!Array.isArray(payload == null ? void 0 : payload.data)) {
|
|
7290
|
+
return { code: "asana_unknown_payload", payload };
|
|
7282
7291
|
}
|
|
7283
|
-
|
|
7292
|
+
return payload.data;
|
|
7293
|
+
}
|
|
7294
|
+
async function fetchTasks(sectionNames) {
|
|
7295
|
+
const sections = await fetchSections();
|
|
7296
|
+
if ("code" in sections)
|
|
7297
|
+
return sections;
|
|
7298
|
+
const targetSections = sections.filter(
|
|
7284
7299
|
(s) => sectionNames.some((name) => normalizeState(name) === normalizeState(s.name))
|
|
7285
7300
|
);
|
|
7286
7301
|
const allIssues = [];
|
|
@@ -7327,8 +7342,33 @@ function createAsanaAdapter(project, platform) {
|
|
|
7327
7342
|
return allIssues;
|
|
7328
7343
|
return splitCandidatesAndWatched(allIssues, activeSections, watchedStates, filter);
|
|
7329
7344
|
},
|
|
7330
|
-
async updateItemStatus(
|
|
7331
|
-
|
|
7345
|
+
async updateItemStatus(itemId, targetState) {
|
|
7346
|
+
const sections = await fetchSections();
|
|
7347
|
+
if ("code" in sections)
|
|
7348
|
+
return sections;
|
|
7349
|
+
const targetSection = sections.find(
|
|
7350
|
+
(s) => normalizeState(s.name) === normalizeState(targetState)
|
|
7351
|
+
);
|
|
7352
|
+
if (!targetSection) {
|
|
7353
|
+
return { code: "asana_api_status", status: 404, body: { message: `Section "${targetState}" not found in project` } };
|
|
7354
|
+
}
|
|
7355
|
+
const result = await postJson(
|
|
7356
|
+
`${endpoint}/sections/${targetSection.gid}/addTask`,
|
|
7357
|
+
{ data: { task: itemId } }
|
|
7358
|
+
);
|
|
7359
|
+
if ("code" in result)
|
|
7360
|
+
return result;
|
|
7361
|
+
return true;
|
|
7362
|
+
},
|
|
7363
|
+
async resolveStatusField() {
|
|
7364
|
+
const sections = await fetchSections();
|
|
7365
|
+
if ("code" in sections)
|
|
7366
|
+
return null;
|
|
7367
|
+
return {
|
|
7368
|
+
project_id: projectGid,
|
|
7369
|
+
field_id: "section",
|
|
7370
|
+
options: sections.map((s) => ({ name: s.name, id: s.gid }))
|
|
7371
|
+
};
|
|
7332
7372
|
},
|
|
7333
7373
|
async fetchIssuesByStates(states) {
|
|
7334
7374
|
if (states.length === 0)
|
|
@@ -9031,6 +9071,23 @@ const _VCHkQhvkNsNDHei1eC_3Lald7zww01nWEx7tz7qHyo = defineNitroPlugin(async (nit
|
|
|
9031
9071
|
});
|
|
9032
9072
|
resolvedBotUsername != null ? resolvedBotUsername : resolvedBotUsername = null;
|
|
9033
9073
|
}
|
|
9074
|
+
} else if (platform.kind === "asana") {
|
|
9075
|
+
const asanaPlatform = platform;
|
|
9076
|
+
if (asanaPlatform.api_key) {
|
|
9077
|
+
const adapterOpts = {
|
|
9078
|
+
accessToken: asanaPlatform.api_key
|
|
9079
|
+
};
|
|
9080
|
+
if (asanaPlatform.bot_username) {
|
|
9081
|
+
adapterOpts.userName = asanaPlatform.bot_username;
|
|
9082
|
+
resolvedBotUsername != null ? resolvedBotUsername : resolvedBotUsername = asanaPlatform.bot_username;
|
|
9083
|
+
}
|
|
9084
|
+
if (asanaPlatform.webhook_secret) {
|
|
9085
|
+
adapterOpts.webhookSecret = asanaPlatform.webhook_secret;
|
|
9086
|
+
}
|
|
9087
|
+
adapters.asana = createAsanaAdapter$1(adapterOpts);
|
|
9088
|
+
} else {
|
|
9089
|
+
log$1.warn("no api_key configured \u2014 Asana chat adapter skipped");
|
|
9090
|
+
}
|
|
9034
9091
|
}
|
|
9035
9092
|
}
|
|
9036
9093
|
if (Object.keys(adapters).length === 0) {
|
|
@@ -9165,7 +9222,7 @@ const _OEXk2V6x3RDCWp7jXoJRwSXc2gM87hr_pgKGv5at4mU = defineNitroPlugin(async (ni
|
|
|
9165
9222
|
resetAuth();
|
|
9166
9223
|
return;
|
|
9167
9224
|
}
|
|
9168
|
-
if (config.auth.admin.
|
|
9225
|
+
if (config.auth.admin.email && config.auth.admin.password) {
|
|
9169
9226
|
if (config.auth.admin.password.length < MIN_ADMIN_PASSWORD_LENGTH) {
|
|
9170
9227
|
log.warn(`admin password must be at least ${MIN_ADMIN_PASSWORD_LENGTH} characters \u2014 admin not seeded`);
|
|
9171
9228
|
return;
|
|
@@ -9179,16 +9236,16 @@ const _OEXk2V6x3RDCWp7jXoJRwSXc2gM87hr_pgKGv5at4mU = defineNitroPlugin(async (ni
|
|
|
9179
9236
|
});
|
|
9180
9237
|
const adminExists = ((_b = existing == null ? void 0 : existing.total) != null ? _b : 0) > 0;
|
|
9181
9238
|
if (!adminExists) {
|
|
9239
|
+
const name = config.auth.admin.email.split("@")[0] || config.auth.admin.email;
|
|
9182
9240
|
await auth.api.createUser({
|
|
9183
9241
|
body: {
|
|
9184
|
-
email:
|
|
9185
|
-
name
|
|
9186
|
-
username: config.auth.admin.username,
|
|
9242
|
+
email: config.auth.admin.email,
|
|
9243
|
+
name,
|
|
9187
9244
|
password: config.auth.admin.password,
|
|
9188
9245
|
role: "admin"
|
|
9189
9246
|
}
|
|
9190
9247
|
});
|
|
9191
|
-
log.info(`admin user "${config.auth.admin.
|
|
9248
|
+
log.info(`admin user "${config.auth.admin.email}" seeded`);
|
|
9192
9249
|
}
|
|
9193
9250
|
} catch (err) {
|
|
9194
9251
|
log.warn("admin seeding failed:", err);
|
|
@@ -9207,128 +9264,128 @@ const assets = {
|
|
|
9207
9264
|
"/_nuxt/1IbcHhBU.js": {
|
|
9208
9265
|
"type": "text/javascript; charset=utf-8",
|
|
9209
9266
|
"etag": "\"a02-RQGcLtCHQx90WSFODqNYMIAZEg0\"",
|
|
9210
|
-
"mtime": "2026-03-
|
|
9267
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9211
9268
|
"size": 2562,
|
|
9212
9269
|
"path": "../public/_nuxt/1IbcHhBU.js"
|
|
9213
9270
|
},
|
|
9214
9271
|
"/_nuxt/BTF_RZdZ.js": {
|
|
9215
9272
|
"type": "text/javascript; charset=utf-8",
|
|
9216
9273
|
"etag": "\"139f-FAbox5PFGVmZUptyaUSe9/bvc68\"",
|
|
9217
|
-
"mtime": "2026-03-
|
|
9274
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9218
9275
|
"size": 5023,
|
|
9219
9276
|
"path": "../public/_nuxt/BTF_RZdZ.js"
|
|
9220
9277
|
},
|
|
9221
|
-
"/_nuxt/Bh-tMwKs.js": {
|
|
9222
|
-
"type": "text/javascript; charset=utf-8",
|
|
9223
|
-
"etag": "\"631ea-CgZi+6tLdne3UUpDARHNg4fIS2s\"",
|
|
9224
|
-
"mtime": "2026-03-21T06:17:58.735Z",
|
|
9225
|
-
"size": 405994,
|
|
9226
|
-
"path": "../public/_nuxt/Bh-tMwKs.js"
|
|
9227
|
-
},
|
|
9228
9278
|
"/_nuxt/BsKcI3-e.js": {
|
|
9229
9279
|
"type": "text/javascript; charset=utf-8",
|
|
9230
9280
|
"etag": "\"106d-zXckGvejhjMRU6ig2hwIkax0358\"",
|
|
9231
|
-
"mtime": "2026-03-
|
|
9281
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9232
9282
|
"size": 4205,
|
|
9233
9283
|
"path": "../public/_nuxt/BsKcI3-e.js"
|
|
9234
9284
|
},
|
|
9235
9285
|
"/_nuxt/BzSBlrMF.js": {
|
|
9236
9286
|
"type": "text/javascript; charset=utf-8",
|
|
9237
9287
|
"etag": "\"37f5-xI3lk6qrXENC8P1j6fw16VBKcGo\"",
|
|
9238
|
-
"mtime": "2026-03-
|
|
9288
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9239
9289
|
"size": 14325,
|
|
9240
9290
|
"path": "../public/_nuxt/BzSBlrMF.js"
|
|
9241
9291
|
},
|
|
9292
|
+
"/_nuxt/Bh-tMwKs.js": {
|
|
9293
|
+
"type": "text/javascript; charset=utf-8",
|
|
9294
|
+
"etag": "\"631ea-CgZi+6tLdne3UUpDARHNg4fIS2s\"",
|
|
9295
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9296
|
+
"size": 405994,
|
|
9297
|
+
"path": "../public/_nuxt/Bh-tMwKs.js"
|
|
9298
|
+
},
|
|
9242
9299
|
"/_nuxt/D32OC87-.js": {
|
|
9243
9300
|
"type": "text/javascript; charset=utf-8",
|
|
9244
9301
|
"etag": "\"16b4-4pHc93XWE9whlGwaUAoq8ovB88A\"",
|
|
9245
|
-
"mtime": "2026-03-
|
|
9302
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9246
9303
|
"size": 5812,
|
|
9247
9304
|
"path": "../public/_nuxt/D32OC87-.js"
|
|
9248
9305
|
},
|
|
9249
9306
|
"/_nuxt/C3iS5Uhb.js": {
|
|
9250
9307
|
"type": "text/javascript; charset=utf-8",
|
|
9251
9308
|
"etag": "\"2b388-YFxKGdn4enuTj6XYfh1oHdEWqVw\"",
|
|
9252
|
-
"mtime": "2026-03-
|
|
9309
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9253
9310
|
"size": 177032,
|
|
9254
9311
|
"path": "../public/_nuxt/C3iS5Uhb.js"
|
|
9255
9312
|
},
|
|
9256
9313
|
"/_nuxt/DYb-jmio.js": {
|
|
9257
9314
|
"type": "text/javascript; charset=utf-8",
|
|
9258
9315
|
"etag": "\"16042-9GFfOLY1pRqKYylZgih1EFiSfVQ\"",
|
|
9259
|
-
"mtime": "2026-03-
|
|
9316
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9260
9317
|
"size": 90178,
|
|
9261
9318
|
"path": "../public/_nuxt/DYb-jmio.js"
|
|
9262
9319
|
},
|
|
9263
|
-
"/_nuxt/DoaBpHko.js": {
|
|
9264
|
-
"type": "text/javascript; charset=utf-8",
|
|
9265
|
-
"etag": "\"d7b-uEyM0MRLgcHsyhv1A5OrstUlXg0\"",
|
|
9266
|
-
"mtime": "2026-03-21T06:17:58.736Z",
|
|
9267
|
-
"size": 3451,
|
|
9268
|
-
"path": "../public/_nuxt/DoaBpHko.js"
|
|
9269
|
-
},
|
|
9270
9320
|
"/_nuxt/DeqoUPGn.js": {
|
|
9271
9321
|
"type": "text/javascript; charset=utf-8",
|
|
9272
9322
|
"etag": "\"17d3-aQPDuOTM+Ikn+7xfEPPmLHbijQg\"",
|
|
9273
|
-
"mtime": "2026-03-
|
|
9323
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9274
9324
|
"size": 6099,
|
|
9275
9325
|
"path": "../public/_nuxt/DeqoUPGn.js"
|
|
9276
9326
|
},
|
|
9327
|
+
"/_nuxt/DoaBpHko.js": {
|
|
9328
|
+
"type": "text/javascript; charset=utf-8",
|
|
9329
|
+
"etag": "\"d7b-uEyM0MRLgcHsyhv1A5OrstUlXg0\"",
|
|
9330
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9331
|
+
"size": 3451,
|
|
9332
|
+
"path": "../public/_nuxt/DoaBpHko.js"
|
|
9333
|
+
},
|
|
9277
9334
|
"/_nuxt/cCUm7iY-.js": {
|
|
9278
9335
|
"type": "text/javascript; charset=utf-8",
|
|
9279
9336
|
"etag": "\"3f45-LeyKcsl31pGPPG2C4tLGIMJ9PHs\"",
|
|
9280
|
-
"mtime": "2026-03-
|
|
9337
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9281
9338
|
"size": 16197,
|
|
9282
9339
|
"path": "../public/_nuxt/cCUm7iY-.js"
|
|
9283
9340
|
},
|
|
9284
9341
|
"/_nuxt/d0DDPc3x.js": {
|
|
9285
9342
|
"type": "text/javascript; charset=utf-8",
|
|
9286
9343
|
"etag": "\"e99-15wTEjs74juYxCRRyfNCo0NyfHw\"",
|
|
9287
|
-
"mtime": "2026-03-
|
|
9344
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9288
9345
|
"size": 3737,
|
|
9289
9346
|
"path": "../public/_nuxt/d0DDPc3x.js"
|
|
9290
9347
|
},
|
|
9291
|
-
"/_nuxt/entry.uBXQoLs_.css": {
|
|
9292
|
-
"type": "text/css; charset=utf-8",
|
|
9293
|
-
"etag": "\"2a0f0-lKTvs26MQDTzQ9+V28ONJm0rqkE\"",
|
|
9294
|
-
"mtime": "2026-03-21T06:17:58.736Z",
|
|
9295
|
-
"size": 172272,
|
|
9296
|
-
"path": "../public/_nuxt/entry.uBXQoLs_.css"
|
|
9297
|
-
},
|
|
9298
9348
|
"/_nuxt/error-404.CpAx3mXP.css": {
|
|
9299
9349
|
"type": "text/css; charset=utf-8",
|
|
9300
9350
|
"etag": "\"97e-aWeQU7sH4sbSXKhTeZS+aHTFHmY\"",
|
|
9301
|
-
"mtime": "2026-03-
|
|
9351
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9302
9352
|
"size": 2430,
|
|
9303
9353
|
"path": "../public/_nuxt/error-404.CpAx3mXP.css"
|
|
9304
9354
|
},
|
|
9355
|
+
"/_nuxt/entry.uBXQoLs_.css": {
|
|
9356
|
+
"type": "text/css; charset=utf-8",
|
|
9357
|
+
"etag": "\"2a0f0-lKTvs26MQDTzQ9+V28ONJm0rqkE\"",
|
|
9358
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9359
|
+
"size": 172272,
|
|
9360
|
+
"path": "../public/_nuxt/entry.uBXQoLs_.css"
|
|
9361
|
+
},
|
|
9305
9362
|
"/_nuxt/error-500.VGk_v7xu.css": {
|
|
9306
9363
|
"type": "text/css; charset=utf-8",
|
|
9307
9364
|
"etag": "\"773-hsfNOir6D1JlUzebA5dOkIFiWzg\"",
|
|
9308
|
-
"mtime": "2026-03-
|
|
9365
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9309
9366
|
"size": 1907,
|
|
9310
9367
|
"path": "../public/_nuxt/error-500.VGk_v7xu.css"
|
|
9311
9368
|
},
|
|
9312
9369
|
"/_nuxt/nOjN_vKW.js": {
|
|
9313
9370
|
"type": "text/javascript; charset=utf-8",
|
|
9314
9371
|
"etag": "\"3ed-TqwB3OS0ZD7wkrEKvHkrp0AT0lY\"",
|
|
9315
|
-
"mtime": "2026-03-
|
|
9372
|
+
"mtime": "2026-03-21T08:46:01.458Z",
|
|
9316
9373
|
"size": 1005,
|
|
9317
9374
|
"path": "../public/_nuxt/nOjN_vKW.js"
|
|
9318
9375
|
},
|
|
9319
|
-
"/_nuxt/builds/meta/abed174c-7c58-4767-9723-7e8af63d9c0f.json": {
|
|
9320
|
-
"type": "application/json",
|
|
9321
|
-
"etag": "\"58-ovBQRtAHnf7L8/9LL6TzcweQjxQ\"",
|
|
9322
|
-
"mtime": "2026-03-21T06:17:58.720Z",
|
|
9323
|
-
"size": 88,
|
|
9324
|
-
"path": "../public/_nuxt/builds/meta/abed174c-7c58-4767-9723-7e8af63d9c0f.json"
|
|
9325
|
-
},
|
|
9326
9376
|
"/_nuxt/builds/latest.json": {
|
|
9327
9377
|
"type": "application/json",
|
|
9328
|
-
"etag": "\"47-
|
|
9329
|
-
"mtime": "2026-03-
|
|
9378
|
+
"etag": "\"47-04y9ipHWf4RZaABJlpwFgoiT0M8\"",
|
|
9379
|
+
"mtime": "2026-03-21T08:46:01.450Z",
|
|
9330
9380
|
"size": 71,
|
|
9331
9381
|
"path": "../public/_nuxt/builds/latest.json"
|
|
9382
|
+
},
|
|
9383
|
+
"/_nuxt/builds/meta/b9184376-213c-4350-b5c2-fff46a3d287b.json": {
|
|
9384
|
+
"type": "application/json",
|
|
9385
|
+
"etag": "\"58-mE1U8H5lZlAuXHbN3vliec2iBdA\"",
|
|
9386
|
+
"mtime": "2026-03-21T08:46:01.445Z",
|
|
9387
|
+
"size": 88,
|
|
9388
|
+
"path": "../public/_nuxt/builds/meta/b9184376-213c-4350-b5c2-fff46a3d287b.json"
|
|
9332
9389
|
}
|
|
9333
9390
|
};
|
|
9334
9391
|
|
|
@@ -9686,6 +9743,7 @@ const _lazy_KpAni7 = () => import('./chunks/routes/api/v1/_identifier_.get.mjs')
|
|
|
9686
9743
|
const _lazy_W3EhOe = () => import('./chunks/routes/api/v1/refresh.post.mjs');
|
|
9687
9744
|
const _lazy_8XVLqI = () => import('./chunks/routes/api/v1/sessions/_sessionId/messages.get.mjs');
|
|
9688
9745
|
const _lazy_FRcfON = () => import('./chunks/routes/api/v1/state.get.mjs');
|
|
9746
|
+
const _lazy_qd2JgI = () => import('./chunks/routes/api/webhooks/asana.post.mjs');
|
|
9689
9747
|
const _lazy_5ZpMYD = () => import('./chunks/routes/api/webhooks/github.post.mjs');
|
|
9690
9748
|
const _lazy_Kk2VIn = () => import('./chunks/routes/api/webhooks/slack.post.mjs');
|
|
9691
9749
|
const _lazy_bHqN2k = () => import('./chunks/routes/renderer.mjs').then(function (n) { return n.r; });
|
|
@@ -9698,6 +9756,7 @@ const handlers = [
|
|
|
9698
9756
|
{ route: '/api/v1/refresh', handler: _lazy_W3EhOe, lazy: true, middleware: false, method: "post" },
|
|
9699
9757
|
{ route: '/api/v1/sessions/:sessionId/messages', handler: _lazy_8XVLqI, lazy: true, middleware: false, method: "get" },
|
|
9700
9758
|
{ route: '/api/v1/state', handler: _lazy_FRcfON, lazy: true, middleware: false, method: "get" },
|
|
9759
|
+
{ route: '/api/webhooks/asana', handler: _lazy_qd2JgI, lazy: true, middleware: false, method: "post" },
|
|
9701
9760
|
{ route: '/api/webhooks/github', handler: _lazy_5ZpMYD, lazy: true, middleware: false, method: "post" },
|
|
9702
9761
|
{ route: '/api/webhooks/slack', handler: _lazy_Kk2VIn, lazy: true, middleware: false, method: "post" },
|
|
9703
9762
|
{ route: '/__nuxt_error', handler: _lazy_bHqN2k, lazy: true, middleware: false, method: undefined },
|
|
@@ -9918,5 +9977,5 @@ const server = Bun.serve({
|
|
|
9918
9977
|
});
|
|
9919
9978
|
console.log(`Listening on ${server.url}...`);
|
|
9920
9979
|
|
|
9921
|
-
export { $fetch$1 as $, destr as A, getRouteRules as B, joinURL as C, defu as D, hasProtocol as E, isScriptProtocol as F, klona as G, parseQuery as H, withQuery as I, sanitizeStatusCode as J, parseURL as K, encodePath as L, decodePath as M, defuFn as N, getContext as O, withTrailingSlash as P, withoutTrailingSlash as Q, baseURL as R, hash$1 as S, executeAsync as T, upperFirst as U, isEqual as V, parse as W, setCookie as X, getCookie as Y, deleteCookie as Z, useOrchestrator as a, getQuery as b, createError$1 as c, defineEventHandler as d,
|
|
9980
|
+
export { $fetch$1 as $, destr as A, getRouteRules as B, joinURL as C, defu as D, hasProtocol as E, isScriptProtocol as F, klona as G, parseQuery as H, withQuery as I, sanitizeStatusCode as J, parseURL as K, encodePath as L, decodePath as M, defuFn as N, getContext as O, withTrailingSlash as P, withoutTrailingSlash as Q, baseURL as R, hash$1 as S, executeAsync as T, upperFirst as U, isEqual as V, parse as W, setCookie as X, getCookie as Y, deleteCookie as Z, useOrchestrator as a, getQuery as b, createError$1 as c, defineEventHandler as d, setResponseHeader as e, fetchSessionMessages as f, getRouterParam as g, useNitroApp as h, isValidSessionId as i, createLogger as j, getRequestHeader as k, shouldHandleComment as l, handleIssueCommentMention as m, handleWebhook as n, createVerify as o, parsePositiveInt as p, buildAssetsURL as q, useRuntimeConfig as r, setResponseStatus as s, toWebRequest as t, useAuth as u, getResponseStatusText as v, workspacePath as w, getResponseStatus as x, defineRenderHandler as y, publicAssetsURL as z };
|
|
9922
9981
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/.bun/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.bun/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../node_modules/.bun/cookie-es@1.2.2/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.bun/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.bun/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.bun/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.bun/h3@1.15.8/node_modules/h3/dist/index.mjs","../../../../node_modules/.bun/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.bun/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.bun/ofetch@1.5.1/node_modules/ofetch/dist/index.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.bun/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/.bun/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.bun/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.bun/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.bun/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.bun/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.bun/@nuxt+nitro-server@4.4.2+021de095a2e6052a/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.mjs","../../../../node_modules/.bun/@nuxt+nitro-server@4.4.2+021de095a2e6052a/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.bun/@nuxtjs+color-mode@3.5.2+2c01c9708b757763/node_modules/@nuxtjs/color-mode/dist/runtime/nitro-plugin.js","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../packages/core/src/logger.ts","../../../../packages/core/src/agent-env.ts","../../../../packages/core/src/tracker/github-auth.ts","../../../../packages/core/src/tools.ts","../../../../packages/core/src/agent-runner.ts","../../../../packages/core/src/types.ts","../../../../packages/core/src/config.ts","../../../../packages/core/src/dispatch-lock.ts","../../../../packages/core/src/filter.ts","../../../../packages/core/src/prompt-builder.ts","../../../../packages/core/src/workspace.ts","../../../../packages/core/src/issue-comment-handler.ts","../../../../packages/core/src/label.ts","../../../../packages/core/src/db.ts","../../../../packages/core/src/tracker/types.ts","../../../../packages/core/src/tracker/asana.ts","../../../../packages/core/src/tracker/github-status-update.ts","../../../../packages/core/src/tracker/github.ts","../../../../packages/core/src/tracker/index.ts","../../../../packages/core/src/workflow.ts","../../../../packages/core/src/orchestrator.ts","../../../../packages/core/src/session-renderer.ts","../../../../packages/core/src/webhook.ts","../../../../packages/core/src/state.ts","../../server/plugins/01.orchestrator.ts","../../server/plugins/02.chat-bot.ts","../../server/utils/auth.ts","../../server/plugins/03.auth.ts","../../../../node_modules/.bun/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/static.mjs","../../server/middleware/auth.ts","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.bun/@nuxt+nitro-server@4.4.2+021de095a2e6052a/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.mjs","../../server/utils/orchestrator.ts","../../node_modules/.cache/nuxt/.nuxt/nuxt-icon-server-bundle.mjs","../../../../node_modules/.bun/@nuxt+icon@2.2.1+06604bec5b73b6ef/node_modules/@nuxt/icon/dist/runtime/server/api.js","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.bun/cookie-es@2.0.0/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/presets/bun/runtime/bun.mjs"],"names":["decode","TRAILING_SLASH_RE","getQuery","parse","tryDecode","serialize","createRouter","f","h","c","createError","mergeHeaders","_globalThis","fetch","Headers","AbortController","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","log","RUNTIME_VAR_RE","process","NETWORK_TIMEOUT_MS","createGraphql","_a","query","sdkQuery","__publicField","GITHUB_ISSUE_URL_RE","nodeSpawnSync","Buffer","workspacePath","PAGE_SIZE","body","_b","_c","parseYaml","watch","content","safeEvent","createGitHubAdapter","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,63,64,66,67,69,70,71,72,73]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/.bun/destr@2.0.5/node_modules/destr/dist/index.mjs","../../../../node_modules/.bun/ufo@1.6.3/node_modules/ufo/dist/index.mjs","../../../../node_modules/.bun/cookie-es@1.2.2/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.bun/radix3@1.1.2/node_modules/radix3/dist/index.mjs","../../../../node_modules/.bun/defu@6.1.4/node_modules/defu/dist/defu.mjs","../../../../node_modules/.bun/node-mock-http@1.0.4/node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/.bun/h3@1.15.8/node_modules/h3/dist/index.mjs","../../../../node_modules/.bun/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../../node_modules/.bun/ofetch@1.5.1/node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/.bun/ofetch@1.5.1/node_modules/ofetch/dist/index.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/dist/index.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/.bun/unstorage@1.17.4+ec7663c595791152/node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/.bun/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/.bun/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/.bun/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/.bun/klona@2.0.6/node_modules/klona/dist/index.mjs","../../../../node_modules/.bun/scule@1.3.0/node_modules/scule/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/.bun/unctx@2.5.0/node_modules/unctx/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/.bun/@nuxt+nitro-server@4.4.2+021de095a2e6052a/node_modules/@nuxt/nitro-server/dist/runtime/utils/error.mjs","../../../../node_modules/.bun/@nuxt+nitro-server@4.4.2+021de095a2e6052a/node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/.bun/@nuxtjs+color-mode@3.5.2+2c01c9708b757763/node_modules/@nuxtjs/color-mode/dist/runtime/nitro-plugin.js","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../packages/core/src/logger.ts","../../../../packages/core/src/agent-env.ts","../../../../packages/core/src/tracker/github-auth.ts","../../../../packages/core/src/tools.ts","../../../../packages/core/src/agent-runner.ts","../../../../packages/core/src/types.ts","../../../../packages/core/src/config.ts","../../../../packages/core/src/dispatch-lock.ts","../../../../packages/core/src/filter.ts","../../../../packages/core/src/prompt-builder.ts","../../../../packages/core/src/workspace.ts","../../../../packages/core/src/issue-comment-handler.ts","../../../../packages/core/src/label.ts","../../../../packages/core/src/db.ts","../../../../packages/core/src/tracker/types.ts","../../../../packages/core/src/tracker/asana.ts","../../../../packages/core/src/tracker/github-status-update.ts","../../../../packages/core/src/tracker/github.ts","../../../../packages/core/src/tracker/index.ts","../../../../packages/core/src/workflow.ts","../../../../packages/core/src/orchestrator.ts","../../../../packages/core/src/session-renderer.ts","../../../../packages/core/src/webhook.ts","../../../../packages/core/src/state.ts","../../server/plugins/01.orchestrator.ts","../../server/plugins/02.chat-bot.ts","../../server/utils/auth.ts","../../server/plugins/03.auth.ts","../../../../node_modules/.bun/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/static.mjs","../../server/middleware/auth.ts","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/.bun/@nuxt+nitro-server@4.4.2+021de095a2e6052a/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.mjs","../../server/utils/orchestrator.ts","../../node_modules/.cache/nuxt/.nuxt/nuxt-icon-server-bundle.mjs","../../../../node_modules/.bun/@nuxt+icon@2.2.1+06604bec5b73b6ef/node_modules/@nuxt/icon/dist/runtime/server/api.js","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/.bun/cookie-es@2.0.0/node_modules/cookie-es/dist/index.mjs","../../../../node_modules/.bun/nitropack@2.13.1+5d168cad3842e387/node_modules/nitropack/dist/presets/bun/runtime/bun.mjs"],"names":["decode","TRAILING_SLASH_RE","getQuery","parse","tryDecode","serialize","createRouter","f","h","c","createError","mergeHeaders","_globalThis","fetch","Headers","AbortController","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","hash","_inlineAppConfig","createRadixRouter","log","RUNTIME_VAR_RE","process","NETWORK_TIMEOUT_MS","createGraphql","_a","query","sdkQuery","__publicField","GITHUB_ISSUE_URL_RE","nodeSpawnSync","Buffer","workspacePath","PAGE_SIZE","body","_b","_c","parseYaml","watch","content","safeEvent","createGitHubAdapter","createAsanaAdapter","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,63,64,66,67,69,70,71,72,73]}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
// src/adapter.ts
|
|
2
|
+
import { ValidationError } from "@chat-adapter/shared";
|
|
3
|
+
import { ConsoleLogger, Message, stringifyMarkdown as stringifyMarkdown2 } from "chat";
|
|
4
|
+
|
|
5
|
+
// src/api.ts
|
|
6
|
+
import { AuthenticationError, NetworkError, ResourceNotFoundError } from "@chat-adapter/shared";
|
|
7
|
+
var TIMEOUT_MS = 3e4;
|
|
8
|
+
var ADAPTER_NAME = "asana";
|
|
9
|
+
function createAsanaApiClient(accessToken, baseUrl) {
|
|
10
|
+
function headers() {
|
|
11
|
+
return {
|
|
12
|
+
"Authorization": `Bearer ${accessToken}`,
|
|
13
|
+
"Accept": "application/json",
|
|
14
|
+
"Content-Type": "application/json"
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
async function request(method, path, body) {
|
|
18
|
+
const url = `${baseUrl}${path}`;
|
|
19
|
+
let response;
|
|
20
|
+
try {
|
|
21
|
+
const ctrl = new AbortController();
|
|
22
|
+
const timeout = setTimeout(() => ctrl.abort(), TIMEOUT_MS);
|
|
23
|
+
response = await fetch(url, {
|
|
24
|
+
method,
|
|
25
|
+
headers: headers(),
|
|
26
|
+
body: body ? JSON.stringify(body) : void 0,
|
|
27
|
+
signal: ctrl.signal
|
|
28
|
+
});
|
|
29
|
+
clearTimeout(timeout);
|
|
30
|
+
} catch (cause) {
|
|
31
|
+
throw new NetworkError(ADAPTER_NAME, `Request failed: ${method} ${path}`, cause instanceof Error ? cause : void 0);
|
|
32
|
+
}
|
|
33
|
+
if (response.status === 401 || response.status === 403) {
|
|
34
|
+
throw new AuthenticationError(ADAPTER_NAME, `${response.status} on ${method} ${path}`);
|
|
35
|
+
}
|
|
36
|
+
if (response.status === 404) {
|
|
37
|
+
throw new ResourceNotFoundError(ADAPTER_NAME, "resource", path);
|
|
38
|
+
}
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const text = await response.text().catch(() => "");
|
|
41
|
+
throw new NetworkError(ADAPTER_NAME, `${response.status} on ${method} ${path}: ${text}`);
|
|
42
|
+
}
|
|
43
|
+
if (response.status === 204 || method === "DELETE") {
|
|
44
|
+
return void 0;
|
|
45
|
+
}
|
|
46
|
+
const json = await response.json();
|
|
47
|
+
return json;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
async fetchTask(taskGid) {
|
|
51
|
+
const result = await request("GET", `/tasks/${taskGid}?opt_fields=gid,name,notes,assignee,assignee.name,created_at,modified_at`);
|
|
52
|
+
return result.data;
|
|
53
|
+
},
|
|
54
|
+
async fetchStories(taskGid, options) {
|
|
55
|
+
const limit = options?.limit ?? 50;
|
|
56
|
+
let path = `/tasks/${taskGid}/stories?opt_fields=gid,text,html_text,type,created_at,created_by,created_by.name,is_edited,likes,likes.user,likes.user.name,num_likes,target&limit=${limit}`;
|
|
57
|
+
if (options?.offset) {
|
|
58
|
+
path += `&offset=${encodeURIComponent(options.offset)}`;
|
|
59
|
+
}
|
|
60
|
+
const result = await request("GET", path);
|
|
61
|
+
return { data: result.data, next_page: result.next_page };
|
|
62
|
+
},
|
|
63
|
+
async postStory(taskGid, text, options) {
|
|
64
|
+
const result = await request("POST", `/tasks/${taskGid}/stories`, {
|
|
65
|
+
data: { text, is_pinned: options?.isPinned ?? false }
|
|
66
|
+
});
|
|
67
|
+
return result.data;
|
|
68
|
+
},
|
|
69
|
+
async updateStory(storyGid, text) {
|
|
70
|
+
const result = await request("PUT", `/stories/${storyGid}`, {
|
|
71
|
+
data: { text }
|
|
72
|
+
});
|
|
73
|
+
return result.data;
|
|
74
|
+
},
|
|
75
|
+
async deleteStory(storyGid) {
|
|
76
|
+
await request("DELETE", `/stories/${storyGid}`);
|
|
77
|
+
},
|
|
78
|
+
async likeStory(storyGid) {
|
|
79
|
+
await request("POST", `/stories/${storyGid}/addHeart`, { data: {} });
|
|
80
|
+
},
|
|
81
|
+
async unlikeStory(storyGid) {
|
|
82
|
+
await request("POST", `/stories/${storyGid}/removeHeart`, { data: {} });
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// src/format-converter.ts
|
|
88
|
+
import { extractCard } from "@chat-adapter/shared";
|
|
89
|
+
import { parseMarkdown, stringifyMarkdown } from "chat";
|
|
90
|
+
function toAst(text) {
|
|
91
|
+
return parseMarkdown(text);
|
|
92
|
+
}
|
|
93
|
+
function fromAst(ast) {
|
|
94
|
+
return stringifyMarkdown(ast);
|
|
95
|
+
}
|
|
96
|
+
function renderPostable(message) {
|
|
97
|
+
if (typeof message === "string") {
|
|
98
|
+
return message;
|
|
99
|
+
}
|
|
100
|
+
const card = extractCard(message);
|
|
101
|
+
if (card) {
|
|
102
|
+
const lines = [];
|
|
103
|
+
if (card.title)
|
|
104
|
+
lines.push(card.title);
|
|
105
|
+
return lines.join("\n");
|
|
106
|
+
}
|
|
107
|
+
if ("markdown" in message && typeof message.markdown === "string") {
|
|
108
|
+
return message.markdown;
|
|
109
|
+
}
|
|
110
|
+
if ("ast" in message && message.ast) {
|
|
111
|
+
return fromAst(message.ast);
|
|
112
|
+
}
|
|
113
|
+
if ("text" in message && typeof message.text === "string") {
|
|
114
|
+
return message.text;
|
|
115
|
+
}
|
|
116
|
+
return "";
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// src/webhook.ts
|
|
120
|
+
import { createHmac } from "crypto";
|
|
121
|
+
function isHandshake(request) {
|
|
122
|
+
return request.headers.get("x-hook-secret");
|
|
123
|
+
}
|
|
124
|
+
function createHandshakeResponse(secret) {
|
|
125
|
+
return new Response("", {
|
|
126
|
+
status: 200,
|
|
127
|
+
headers: { "X-Hook-Secret": secret }
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function verifySignature(body, signature, secret) {
|
|
131
|
+
const hmac = createHmac("sha256", secret);
|
|
132
|
+
hmac.update(body);
|
|
133
|
+
const expected = hmac.digest("hex");
|
|
134
|
+
return expected === signature;
|
|
135
|
+
}
|
|
136
|
+
function extractStoryEvents(payload) {
|
|
137
|
+
if (!Array.isArray(payload.events))
|
|
138
|
+
return [];
|
|
139
|
+
return payload.events.filter(
|
|
140
|
+
(e) => e.resource.resource_type === "story" && e.action === "added" && e.parent?.resource_type === "task"
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// src/adapter.ts
|
|
145
|
+
var AsanaAdapter = class {
|
|
146
|
+
name = "asana";
|
|
147
|
+
userName;
|
|
148
|
+
chat = null;
|
|
149
|
+
logger;
|
|
150
|
+
api;
|
|
151
|
+
webhookSecret = null;
|
|
152
|
+
botUserId;
|
|
153
|
+
constructor(config) {
|
|
154
|
+
this.userName = config.userName ?? "asana-bot";
|
|
155
|
+
this.logger = config.logger ?? new ConsoleLogger();
|
|
156
|
+
this.api = createAsanaApiClient(
|
|
157
|
+
config.accessToken,
|
|
158
|
+
config.baseUrl ?? "https://app.asana.com/api/1.0"
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
async initialize(chat) {
|
|
162
|
+
this.chat = chat;
|
|
163
|
+
this.logger = chat.getLogger("asana");
|
|
164
|
+
}
|
|
165
|
+
encodeThreadId(data) {
|
|
166
|
+
return `asana:${data.taskGid}`;
|
|
167
|
+
}
|
|
168
|
+
decodeThreadId(threadId) {
|
|
169
|
+
const parts = threadId.split(":");
|
|
170
|
+
if (parts.length !== 2 || parts[0] !== "asana" || !parts[1]) {
|
|
171
|
+
throw new ValidationError("asana", `Invalid Asana thread ID: ${threadId}`);
|
|
172
|
+
}
|
|
173
|
+
return { taskGid: parts[1] };
|
|
174
|
+
}
|
|
175
|
+
channelIdFromThreadId(threadId) {
|
|
176
|
+
return threadId;
|
|
177
|
+
}
|
|
178
|
+
async handleWebhook(request, options) {
|
|
179
|
+
const hookSecret = isHandshake(request);
|
|
180
|
+
if (hookSecret) {
|
|
181
|
+
this.webhookSecret = hookSecret;
|
|
182
|
+
this.logger.info("webhook handshake completed");
|
|
183
|
+
return createHandshakeResponse(hookSecret);
|
|
184
|
+
}
|
|
185
|
+
const signature = request.headers.get("x-hook-signature");
|
|
186
|
+
if (!signature) {
|
|
187
|
+
return new Response("Missing signature", { status: 401 });
|
|
188
|
+
}
|
|
189
|
+
const body = await request.text();
|
|
190
|
+
if (this.webhookSecret && !verifySignature(body, signature, this.webhookSecret)) {
|
|
191
|
+
return new Response("Invalid signature", { status: 401 });
|
|
192
|
+
}
|
|
193
|
+
let payload;
|
|
194
|
+
try {
|
|
195
|
+
payload = JSON.parse(body);
|
|
196
|
+
} catch {
|
|
197
|
+
return new Response("Invalid JSON", { status: 400 });
|
|
198
|
+
}
|
|
199
|
+
const storyEvents = extractStoryEvents(payload);
|
|
200
|
+
for (const event of storyEvents) {
|
|
201
|
+
if (!event.parent?.gid || !this.chat)
|
|
202
|
+
continue;
|
|
203
|
+
const taskGid = event.parent.gid;
|
|
204
|
+
const storyGid = event.resource.gid;
|
|
205
|
+
const threadId = this.encodeThreadId({ taskGid });
|
|
206
|
+
const factory = async () => {
|
|
207
|
+
const stories = await this.api.fetchStories(taskGid, { limit: 1 });
|
|
208
|
+
const story = stories.data.find((s) => s.gid === storyGid);
|
|
209
|
+
if (!story) {
|
|
210
|
+
throw new Error(`Story ${storyGid} not found on task ${taskGid}`);
|
|
211
|
+
}
|
|
212
|
+
return this.parseMessage(story);
|
|
213
|
+
};
|
|
214
|
+
this.chat.processMessage(this, threadId, factory, options);
|
|
215
|
+
}
|
|
216
|
+
return new Response("OK", { status: 200 });
|
|
217
|
+
}
|
|
218
|
+
parseMessage(raw) {
|
|
219
|
+
const threadId = raw.target?.gid ? this.encodeThreadId({ taskGid: raw.target.gid }) : "asana:unknown";
|
|
220
|
+
const isBotMessage = raw.created_by?.gid === this.botUserId;
|
|
221
|
+
return new Message({
|
|
222
|
+
id: raw.gid,
|
|
223
|
+
threadId,
|
|
224
|
+
text: raw.text ?? "",
|
|
225
|
+
formatted: toAst(raw.text ?? ""),
|
|
226
|
+
raw,
|
|
227
|
+
author: {
|
|
228
|
+
userId: raw.created_by?.gid ?? "unknown",
|
|
229
|
+
userName: raw.created_by?.name ?? "unknown",
|
|
230
|
+
fullName: raw.created_by?.name ?? "",
|
|
231
|
+
isBot: isBotMessage,
|
|
232
|
+
isMe: isBotMessage
|
|
233
|
+
},
|
|
234
|
+
metadata: {
|
|
235
|
+
dateSent: new Date(raw.created_at),
|
|
236
|
+
edited: raw.is_edited ?? false
|
|
237
|
+
},
|
|
238
|
+
attachments: []
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
async postMessage(threadId, message) {
|
|
242
|
+
const { taskGid } = this.decodeThreadId(threadId);
|
|
243
|
+
const text = renderPostable(message);
|
|
244
|
+
const story = await this.api.postStory(taskGid, text);
|
|
245
|
+
return { id: story.gid, threadId, raw: story };
|
|
246
|
+
}
|
|
247
|
+
async editMessage(threadId, messageId, message) {
|
|
248
|
+
const text = renderPostable(message);
|
|
249
|
+
const story = await this.api.updateStory(messageId, text);
|
|
250
|
+
return { id: story.gid, threadId, raw: story };
|
|
251
|
+
}
|
|
252
|
+
async deleteMessage(_threadId, messageId) {
|
|
253
|
+
await this.api.deleteStory(messageId);
|
|
254
|
+
}
|
|
255
|
+
async fetchMessages(threadId, options) {
|
|
256
|
+
const { taskGid } = this.decodeThreadId(threadId);
|
|
257
|
+
const limit = options?.limit ?? 50;
|
|
258
|
+
const offset = options?.cursor;
|
|
259
|
+
const result = await this.api.fetchStories(taskGid, { limit, offset });
|
|
260
|
+
const comments = result.data.filter((s) => s.type === "comment");
|
|
261
|
+
const messages = comments.map((s) => this.parseMessage(s));
|
|
262
|
+
return {
|
|
263
|
+
messages,
|
|
264
|
+
nextCursor: result.next_page?.offset
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
async fetchThread(threadId) {
|
|
268
|
+
const { taskGid } = this.decodeThreadId(threadId);
|
|
269
|
+
const task = await this.api.fetchTask(taskGid);
|
|
270
|
+
return {
|
|
271
|
+
id: threadId,
|
|
272
|
+
channelId: threadId,
|
|
273
|
+
channelName: task.name,
|
|
274
|
+
metadata: {
|
|
275
|
+
taskGid: task.gid,
|
|
276
|
+
taskName: task.name
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
async addReaction(threadId, messageId, _emoji) {
|
|
281
|
+
await this.api.likeStory(messageId);
|
|
282
|
+
}
|
|
283
|
+
async removeReaction(threadId, messageId, _emoji) {
|
|
284
|
+
await this.api.unlikeStory(messageId);
|
|
285
|
+
}
|
|
286
|
+
async startTyping(_threadId) {
|
|
287
|
+
}
|
|
288
|
+
renderFormatted(content) {
|
|
289
|
+
return stringifyMarkdown2(content);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
// src/factory.ts
|
|
294
|
+
import process from "process";
|
|
295
|
+
function createAsanaAdapter(config) {
|
|
296
|
+
const accessToken = config?.accessToken ?? process.env.ASANA_ACCESS_TOKEN;
|
|
297
|
+
if (!accessToken) {
|
|
298
|
+
throw new Error("Asana adapter requires an access token. Set ASANA_ACCESS_TOKEN or pass accessToken in config.");
|
|
299
|
+
}
|
|
300
|
+
return new AsanaAdapter({
|
|
301
|
+
accessToken,
|
|
302
|
+
baseUrl: config?.baseUrl,
|
|
303
|
+
userName: config?.userName,
|
|
304
|
+
logger: config?.logger
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
export {
|
|
308
|
+
AsanaAdapter,
|
|
309
|
+
createAsanaAdapter,
|
|
310
|
+
createAsanaApiClient
|
|
311
|
+
};
|
|
312
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "chat-adapter-asana",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "Asana adapter for Chat SDK — task comment threads",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/pleaseai/chat-adapter-asana#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/pleaseai/chat-adapter-asana.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/pleaseai/chat-adapter-asana/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"chat-sdk",
|
|
17
|
+
"chat-adapter",
|
|
18
|
+
"asana",
|
|
19
|
+
"bot",
|
|
20
|
+
"task-comments"
|
|
21
|
+
],
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"import": "./dist/index.js"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"main": "./dist/index.js",
|
|
29
|
+
"module": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsup",
|
|
36
|
+
"dev": "tsup --watch",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"test:coverage": "vitest run --coverage",
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"lint": "eslint .",
|
|
42
|
+
"lint:fix": "eslint . --fix",
|
|
43
|
+
"clean": "rm -rf dist"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"chat": "^4.0.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@chat-adapter/shared": "^4.0.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@antfu/eslint-config": "^7.7.3",
|
|
53
|
+
"@chat-adapter/state-memory": "^4.0.0",
|
|
54
|
+
"@types/node": "^22.0.0",
|
|
55
|
+
"@vitest/coverage-v8": "^4.1.0",
|
|
56
|
+
"chat": "^4.20.2",
|
|
57
|
+
"eslint": "^10.0.3",
|
|
58
|
+
"tsup": "^8.3.0",
|
|
59
|
+
"turbo": "^2.8.20",
|
|
60
|
+
"typescript": "^5.7.0",
|
|
61
|
+
"vitest": "^4.0.0"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pleaseai/agent-prod",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"ccount": "2.0.1",
|
|
65
65
|
"character-entities": "2.0.2",
|
|
66
66
|
"chat": "4.20.2",
|
|
67
|
+
"chat-adapter-asana": "0.1.0",
|
|
67
68
|
"combined-stream": "1.0.8",
|
|
68
69
|
"consola": "3.4.2",
|
|
69
70
|
"cross-fetch": "4.1.0",
|
package/dist/index.js
CHANGED
|
@@ -27670,7 +27670,7 @@ var {
|
|
|
27670
27670
|
var package_default = {
|
|
27671
27671
|
name: "@pleaseai/agent",
|
|
27672
27672
|
type: "module",
|
|
27673
|
-
version: "0.1.
|
|
27673
|
+
version: "0.1.19",
|
|
27674
27674
|
description: "Autonomous coding agent for GitHub, Linear, and Slack",
|
|
27675
27675
|
license: "FSL-1.1-MIT",
|
|
27676
27676
|
repository: {
|
|
@@ -27714,6 +27714,7 @@ var package_default = {
|
|
|
27714
27714
|
"@vueuse/nuxt": "^14.2.1",
|
|
27715
27715
|
"better-auth": "^1.5.5",
|
|
27716
27716
|
chat: "^4.20.2",
|
|
27717
|
+
"chat-adapter-asana": "^0.1.0",
|
|
27717
27718
|
commander: "^14.0.3",
|
|
27718
27719
|
nuxt: "^4.4.2",
|
|
27719
27720
|
tailwindcss: "^4.2.2"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pleaseai/agent",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.19",
|
|
5
5
|
"description": "Autonomous coding agent for GitHub, Linear, and Slack",
|
|
6
6
|
"license": "FSL-1.1-MIT",
|
|
7
7
|
"repository": {
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"@vueuse/nuxt": "^14.2.1",
|
|
46
46
|
"better-auth": "^1.5.5",
|
|
47
47
|
"chat": "^4.20.2",
|
|
48
|
+
"chat-adapter-asana": "^0.1.0",
|
|
48
49
|
"commander": "^14.0.3",
|
|
49
50
|
"nuxt": "^4.4.2",
|
|
50
51
|
"tailwindcss": "^4.2.2"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"abed174c-7c58-4767-9723-7e8af63d9c0f","timestamp":1774073859839,"prerendered":[]}
|