agentix-cli 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/agent-4AOMVXRJ.js +2 -0
- package/dist/board-dashboard-CXIVJKDP.js +7282 -0
- package/dist/board-dashboard-CXIVJKDP.js.map +1 -0
- package/dist/chunk-34NG7UDX.js +11 -0
- package/dist/chunk-34NG7UDX.js.map +1 -0
- package/dist/chunk-4HP6UC2X.js +13 -0
- package/dist/chunk-4HP6UC2X.js.map +1 -0
- package/dist/chunk-5F3J55LG.js +2 -0
- package/dist/chunk-5F3J55LG.js.map +1 -0
- package/dist/chunk-5WNGHDFC.js +164 -0
- package/dist/chunk-5WNGHDFC.js.map +1 -0
- package/dist/{chunk-7MBTMCKY.js → chunk-63UYRJIC.js} +2 -2
- package/dist/chunk-64P4QHSZ.js +2 -0
- package/dist/chunk-64P4QHSZ.js.map +1 -0
- package/dist/chunk-6PPIFDOQ.js +1742 -0
- package/dist/chunk-6PPIFDOQ.js.map +1 -0
- package/dist/chunk-ABCHHNG6.js +625 -0
- package/dist/chunk-ABCHHNG6.js.map +1 -0
- package/dist/chunk-AFRHKA7B.js +2 -0
- package/dist/chunk-AFRHKA7B.js.map +1 -0
- package/dist/chunk-BFZUG66X.js +45 -0
- package/dist/chunk-BFZUG66X.js.map +1 -0
- package/dist/chunk-CDNWCYF7.js +2 -0
- package/dist/chunk-CDNWCYF7.js.map +1 -0
- package/dist/{chunk-6MKAXEE5.js → chunk-EKTPCSN4.js} +2 -2
- package/dist/{chunk-6MKAXEE5.js.map → chunk-EKTPCSN4.js.map} +1 -1
- package/dist/chunk-EW27SCCC.js +2 -0
- package/dist/chunk-EW27SCCC.js.map +1 -0
- package/dist/chunk-HCFSHGK4.js +46 -0
- package/dist/chunk-HCFSHGK4.js.map +1 -0
- package/dist/chunk-HHJGKD5B.js +71 -0
- package/dist/chunk-HHJGKD5B.js.map +1 -0
- package/dist/chunk-LEIYC3BF.js +104 -0
- package/dist/chunk-LEIYC3BF.js.map +1 -0
- package/dist/{chunk-HLRVDCNH.js → chunk-MBEQASP3.js} +2 -2
- package/dist/chunk-N67JZAXU.js +2 -0
- package/dist/chunk-N67JZAXU.js.map +1 -0
- package/dist/{chunk-RGUYBH77.js → chunk-SRHLXZRF.js} +2 -2
- package/dist/chunk-TT2Q7YMZ.js +118 -0
- package/dist/chunk-TT2Q7YMZ.js.map +1 -0
- package/dist/{chunk-HI24KAEY.js → chunk-WJXU5F4Z.js} +3 -4
- package/dist/{chunk-HI24KAEY.js.map → chunk-WJXU5F4Z.js.map} +1 -1
- package/dist/chunk-WZEYII2S.js +6 -0
- package/dist/chunk-WZEYII2S.js.map +1 -0
- package/dist/chunk-XDJSYQST.js +6 -0
- package/dist/chunk-XDJSYQST.js.map +1 -0
- package/dist/chunk-YPOELN6Z.js +798 -0
- package/dist/chunk-YPOELN6Z.js.map +1 -0
- package/dist/{chunk-QZP65I2H.js → chunk-ZE2YFX4K.js} +2 -2
- package/dist/cli.js +1 -302
- package/dist/cli.js.map +1 -1
- package/dist/{compaction-JBZZ7I7Y.js → compaction-X46EQEPS.js} +6 -6
- package/dist/compaction-X46EQEPS.js.map +1 -0
- package/dist/{config-DCJYECL4.js → config-KCYHMKCT.js} +2 -2
- package/dist/config-mutator-QP4GLBOE.js +2 -0
- package/dist/context-planner-G2J7FNNU.js +17 -0
- package/dist/context-planner-G2J7FNNU.js.map +1 -0
- package/dist/editor-chat-R54E65W5.js +137 -0
- package/dist/editor-chat-R54E65W5.js.map +1 -0
- package/dist/heal-JDXUPRET.js +2 -0
- package/dist/inbox-L5ZZ623Y.js +315 -0
- package/dist/inbox-L5ZZ623Y.js.map +1 -0
- package/dist/index.d.ts +1996 -18
- package/dist/index.js +22 -49
- package/dist/index.js.map +1 -1
- package/dist/ingest-whatsapp-NS4OWDOU.js +6 -0
- package/dist/ingest-whatsapp-NS4OWDOU.js.map +1 -0
- package/dist/memory-extract-WH4FZ456.js +2 -0
- package/dist/processes-XF5CV4LK.js +256 -0
- package/dist/processes-XF5CV4LK.js.map +1 -0
- package/dist/program-FFWEILAS.js +2 -0
- package/dist/providers-AKQ4HTB4.js +2 -0
- package/dist/query-PKGYE5HR.js +2 -0
- package/dist/registry-IFMDJWQ7.js +2 -0
- package/dist/scheduler-63D5KFO7.js +2 -0
- package/dist/scheduler-63D5KFO7.js.map +1 -0
- package/dist/slack-PSQLVTGB.js +3 -0
- package/dist/slack-PSQLVTGB.js.map +1 -0
- package/dist/store-5MJOO74U.js +2 -0
- package/dist/store-5MJOO74U.js.map +1 -0
- package/dist/task-store-NM7VKNLE.js +2 -0
- package/dist/task-store-NM7VKNLE.js.map +1 -0
- package/dist/telegram-W4SLFMNY.js +3 -0
- package/dist/telegram-W4SLFMNY.js.map +1 -0
- package/dist/timers-PCB4ZIBD.js +2 -0
- package/dist/timers-PCB4ZIBD.js.map +1 -0
- package/dist/types-C7IFH42Z.js +2 -0
- package/dist/types-C7IFH42Z.js.map +1 -0
- package/dist/types-OIFU3KSQ.js +2 -0
- package/dist/types-OIFU3KSQ.js.map +1 -0
- package/dist/usage-dashboard-AXPXB2KP.js +803 -0
- package/dist/usage-dashboard-AXPXB2KP.js.map +1 -0
- package/dist/web/workflow-editor.global.js +1427 -0
- package/dist/web/workflow-editor.global.js.map +1 -0
- package/dist/whatsapp-DCHRBRVV.js +3 -0
- package/dist/whatsapp-DCHRBRVV.js.map +1 -0
- package/dist/wiki-UDPYFJBL.js +2 -0
- package/dist/wiki-UDPYFJBL.js.map +1 -0
- package/dist/workspace-setup-C4VB3QZV.js +2 -0
- package/dist/workspace-setup-C4VB3QZV.js.map +1 -0
- package/package.json +10 -3
- package/dist/agent-LRSSVFDR.js +0 -2
- package/dist/board-dashboard-DAPHL6W2.js +0 -4508
- package/dist/board-dashboard-DAPHL6W2.js.map +0 -1
- package/dist/chunk-3XULOWYB.js +0 -199
- package/dist/chunk-3XULOWYB.js.map +0 -1
- package/dist/chunk-6U2XOQHU.js +0 -7
- package/dist/chunk-6U2XOQHU.js.map +0 -1
- package/dist/chunk-AU37OREL.js +0 -108
- package/dist/chunk-AU37OREL.js.map +0 -1
- package/dist/chunk-B4Q4X7D5.js +0 -6
- package/dist/chunk-B4Q4X7D5.js.map +0 -1
- package/dist/chunk-CXY2RYNI.js +0 -11
- package/dist/chunk-CXY2RYNI.js.map +0 -1
- package/dist/chunk-IEVEMKAI.js +0 -168
- package/dist/chunk-IEVEMKAI.js.map +0 -1
- package/dist/chunk-KXZMYLHQ.js +0 -46
- package/dist/chunk-KXZMYLHQ.js.map +0 -1
- package/dist/chunk-M7HKBG3V.js +0 -2
- package/dist/chunk-M7HKBG3V.js.map +0 -1
- package/dist/chunk-RB7265LO.js +0 -12
- package/dist/chunk-RB7265LO.js.map +0 -1
- package/dist/chunk-WVNSWBCU.js +0 -138
- package/dist/chunk-WVNSWBCU.js.map +0 -1
- package/dist/compaction-JBZZ7I7Y.js.map +0 -1
- package/dist/config-mutator-6EJHSP3Y.js +0 -2
- package/dist/heal-WKY5I4KB.js +0 -2
- package/dist/memory-extract-AD7KMRPC.js +0 -2
- package/dist/providers-VUIWO3ZK.js +0 -2
- package/dist/registry-5ND7GLFJ.js +0 -2
- package/dist/scheduler-FCXOXCN5.js +0 -2
- package/dist/usage-dashboard-QX3CF6KK.js +0 -404
- package/dist/usage-dashboard-QX3CF6KK.js.map +0 -1
- package/dist/workspace-setup-ZWTT42XT.js +0 -2
- /package/dist/{agent-LRSSVFDR.js.map → agent-4AOMVXRJ.js.map} +0 -0
- /package/dist/{chunk-7MBTMCKY.js.map → chunk-63UYRJIC.js.map} +0 -0
- /package/dist/{chunk-HLRVDCNH.js.map → chunk-MBEQASP3.js.map} +0 -0
- /package/dist/{chunk-RGUYBH77.js.map → chunk-SRHLXZRF.js.map} +0 -0
- /package/dist/{chunk-QZP65I2H.js.map → chunk-ZE2YFX4K.js.map} +0 -0
- /package/dist/{config-DCJYECL4.js.map → config-KCYHMKCT.js.map} +0 -0
- /package/dist/{config-mutator-6EJHSP3Y.js.map → config-mutator-QP4GLBOE.js.map} +0 -0
- /package/dist/{heal-WKY5I4KB.js.map → heal-JDXUPRET.js.map} +0 -0
- /package/dist/{memory-extract-AD7KMRPC.js.map → memory-extract-WH4FZ456.js.map} +0 -0
- /package/dist/{providers-VUIWO3ZK.js.map → program-FFWEILAS.js.map} +0 -0
- /package/dist/{registry-5ND7GLFJ.js.map → providers-AKQ4HTB4.js.map} +0 -0
- /package/dist/{scheduler-FCXOXCN5.js.map → query-PKGYE5HR.js.map} +0 -0
- /package/dist/{workspace-setup-ZWTT42XT.js.map → registry-IFMDJWQ7.js.map} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import"./chunk-FIOB3MEX.js";function u(e){let r=e.log??(()=>{});return async function(o){let n=e.inboxBaseUrl??"",s=f(o);for(let d of o.assignedTo){let a=e.actors.channelFor(d,"whatsapp");if(!a)continue;let c=l(o,d,n,s);try{let t=await e.adapter.send({channel:"whatsapp",chatId:a,text:c,parseMode:"plain"}),p=[...o.delivered??[],{channel:"whatsapp",handle:a,messageId:typeof t=="string"?t:void 0,at:new Date().toISOString()}];e.tasks.save({...o,delivered:p})}catch(t){r(`[task:${o.id}] whatsapp delivery to ${d}@${a} failed: ${t?.message??t}`)}}}}function f(e){if(!e.form.secondaryAction)return!1;for(let r of e.form.fields??[])if(r.required&&r.defaultValue===void 0)return!1;return!0}function l(e,r,i,o){let n=[];if(n.push(`\u{1F4CB} ${e.title}`),e.description&&(n.push(""),n.push(e.description)),e.form.fields?.length&&!o){n.push("","Fields:");for(let s of e.form.fields)n.push(`\u2022 ${s.label}${s.required?" (required)":""}`)}return e.dueAt&&n.push("",`\u23F0 Due: ${new Date(e.dueAt).toLocaleString()}`),o?(n.push("",`\u2713 ${e.form.submitLabel||"Approve"}: ${i}/t/${encodeURIComponent(e.id)}/primary?actor=${encodeURIComponent(r)}`),e.form.secondaryAction&&n.push(`\u2717 ${e.form.secondaryAction.label}: ${i}/t/${encodeURIComponent(e.id)}/secondary?actor=${encodeURIComponent(r)}`)):n.push("",`Open form: ${i}/inbox?actor=${encodeURIComponent(r)}`),n.join(`
|
|
2
|
+
`)}export{u as createWhatsappTaskRenderer};
|
|
3
|
+
//# sourceMappingURL=whatsapp-DCHRBRVV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/forms/renderers/whatsapp.ts"],"sourcesContent":["import type { UserTaskRecord, TaskStore } from \"../../workflows/task-store\"\nimport type { ActorStore } from \"../../actors/store\"\n\n// --- WhatsApp user-task renderer ---\n//\n// Mirrors the Telegram renderer with Text only: WhatsApp's Baileys-based\n// adapter doesn't expose native interactive buttons, so v1 just delivers\n// a formatted text message with the task title, description, field\n// summary, and a link to the web inbox.\n//\n// Approve/reject one-click URLs (the /t/:taskId/:action endpoint) are\n// included inline when the form is approve/reject-shaped — the user taps\n// the link, the browser opens, submission happens server-side.\n\ninterface SendingAdapter {\n send: (msg: { channel: string; chatId: string; text: string; parseMode?: \"markdown\" | \"html\" | \"plain\" }) => Promise<string | void>\n}\n\nexport interface WhatsappRendererOptions {\n actors: ActorStore\n tasks: TaskStore\n adapter: SendingAdapter\n inboxBaseUrl?: string\n log?: (msg: string) => void\n}\n\nexport function createWhatsappTaskRenderer(opts: WhatsappRendererOptions) {\n const log = opts.log ?? (() => {})\n return async function render(task: UserTaskRecord): Promise<void> {\n const baseUrl = opts.inboxBaseUrl ?? \"\"\n const oneClick = canOneClickSubmit(task)\n for (const actorId of task.assignedTo) {\n const handle = opts.actors.channelFor(actorId, \"whatsapp\")\n if (!handle) continue\n const text = buildText(task, actorId, baseUrl, oneClick)\n try {\n const messageId = await opts.adapter.send({\n channel: \"whatsapp\",\n chatId: handle,\n text,\n parseMode: \"plain\",\n })\n const delivered = [\n ...(task.delivered ?? []),\n {\n channel: \"whatsapp\",\n handle,\n messageId: typeof messageId === \"string\" ? messageId : undefined,\n at: new Date().toISOString(),\n },\n ]\n opts.tasks.save({ ...task, delivered })\n } catch (e: any) {\n log(`[task:${task.id}] whatsapp delivery to ${actorId}@${handle} failed: ${e?.message ?? e}`)\n }\n }\n }\n}\n\nfunction canOneClickSubmit(task: UserTaskRecord): boolean {\n if (!task.form.secondaryAction) return false\n for (const f of task.form.fields ?? []) {\n if (f.required && f.defaultValue === undefined) return false\n }\n return true\n}\n\nfunction buildText(task: UserTaskRecord, actorId: string, baseUrl: string, oneClick: boolean): string {\n const lines: string[] = []\n lines.push(`📋 ${task.title}`)\n if (task.description) { lines.push(\"\"); lines.push(task.description) }\n if (task.form.fields?.length && !oneClick) {\n lines.push(\"\", \"Fields:\")\n for (const f of task.form.fields) {\n lines.push(`• ${f.label}${f.required ? \" (required)\" : \"\"}`)\n }\n }\n if (task.dueAt) lines.push(\"\", `⏰ Due: ${new Date(task.dueAt).toLocaleString()}`)\n if (oneClick) {\n lines.push(\n \"\",\n `✓ ${task.form.submitLabel || \"Approve\"}: ${baseUrl}/t/${encodeURIComponent(task.id)}/primary?actor=${encodeURIComponent(actorId)}`,\n )\n if (task.form.secondaryAction) {\n lines.push(\n `✗ ${task.form.secondaryAction.label}: ${baseUrl}/t/${encodeURIComponent(task.id)}/secondary?actor=${encodeURIComponent(actorId)}`,\n )\n }\n } else {\n lines.push(\"\", `Open form: ${baseUrl}/inbox?actor=${encodeURIComponent(actorId)}`)\n }\n return lines.join(\"\\n\")\n}\n"],"mappings":"4BA0BO,SAASA,EAA2BC,EAA+B,CACxE,IAAMC,EAAMD,EAAK,MAAQ,IAAM,CAAC,GAChC,OAAO,eAAsBE,EAAqC,CAChE,IAAMC,EAAUH,EAAK,cAAgB,GAC/BI,EAAWC,EAAkBH,CAAI,EACvC,QAAWI,KAAWJ,EAAK,WAAY,CACrC,IAAMK,EAASP,EAAK,OAAO,WAAWM,EAAS,UAAU,EACzD,GAAI,CAACC,EAAQ,SACb,IAAMC,EAAOC,EAAUP,EAAMI,EAASH,EAASC,CAAQ,EACvD,GAAI,CACF,IAAMM,EAAY,MAAMV,EAAK,QAAQ,KAAK,CACxC,QAAS,WACT,OAAQO,EACR,KAAAC,EACA,UAAW,OACb,CAAC,EACKG,EAAY,CAChB,GAAIT,EAAK,WAAa,CAAC,EACvB,CACE,QAAS,WACT,OAAAK,EACA,UAAW,OAAOG,GAAc,SAAWA,EAAY,OACvD,GAAI,IAAI,KAAK,EAAE,YAAY,CAC7B,CACF,EACAV,EAAK,MAAM,KAAK,CAAE,GAAGE,EAAM,UAAAS,CAAU,CAAC,CACxC,OAASC,EAAP,CACAX,EAAI,SAASC,EAAK,4BAA4BI,KAAWC,aAAkBK,GAAG,SAAWA,GAAG,CAC9F,EAEJ,CACF,CAEA,SAASP,EAAkBH,EAA+B,CACxD,GAAI,CAACA,EAAK,KAAK,gBAAiB,MAAO,GACvC,QAAWW,KAAKX,EAAK,KAAK,QAAU,CAAC,EACnC,GAAIW,EAAE,UAAYA,EAAE,eAAiB,OAAW,MAAO,GAEzD,MAAO,EACT,CAEA,SAASJ,EAAUP,EAAsBI,EAAiBH,EAAiBC,EAA2B,CACpG,IAAMU,EAAkB,CAAC,EAGzB,GAFAA,EAAM,KAAK,aAAMZ,EAAK,OAAO,EACzBA,EAAK,cAAeY,EAAM,KAAK,EAAE,EAAGA,EAAM,KAAKZ,EAAK,WAAW,GAC/DA,EAAK,KAAK,QAAQ,QAAU,CAACE,EAAU,CACzCU,EAAM,KAAK,GAAI,SAAS,EACxB,QAAWD,KAAKX,EAAK,KAAK,OACxBY,EAAM,KAAK,UAAKD,EAAE,QAAQA,EAAE,SAAW,cAAgB,IAAI,EAG/D,OAAIX,EAAK,OAAOY,EAAM,KAAK,GAAI,eAAU,IAAI,KAAKZ,EAAK,KAAK,EAAE,eAAe,GAAG,EAC5EE,GACFU,EAAM,KACJ,GACA,UAAKZ,EAAK,KAAK,aAAe,cAAcC,OAAa,mBAAmBD,EAAK,EAAE,mBAAmB,mBAAmBI,CAAO,GAClI,EACIJ,EAAK,KAAK,iBACZY,EAAM,KACJ,UAAKZ,EAAK,KAAK,gBAAgB,UAAUC,OAAa,mBAAmBD,EAAK,EAAE,qBAAqB,mBAAmBI,CAAO,GACjI,GAGFQ,EAAM,KAAK,GAAI,cAAcX,iBAAuB,mBAAmBG,CAAO,GAAG,EAE5EQ,EAAM,KAAK;AAAA,CAAI,CACxB","names":["createWhatsappTaskRenderer","opts","log","task","baseUrl","oneClick","canOneClickSubmit","actorId","handle","text","buildText","messageId","delivered","e","f","lines"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a,b}from"./chunk-LEIYC3BF.js";import"./chunk-WZEYII2S.js";import"./chunk-64P4QHSZ.js";import{a as c}from"./chunk-BFZUG66X.js";import"./chunk-QOYAX2FT.js";import"./chunk-FIOB3MEX.js";export{b as WikiHub,a as WikiStore,c as agenticQuery};
|
|
2
|
+
//# sourceMappingURL=wiki-UDPYFJBL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentix-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"description": "AI operations layer for small & medium businesses. Routes Telegram, WhatsApp, Slack, Discord, GitLab, crons, webhooks, and mesh tasks to AI agents on Claude, OpenAI, or any LLM. Web wizard for non-technical operators, CLI for engineers. Self-hosted.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "anis_marrouchi",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"bring-your-own-key"
|
|
46
46
|
],
|
|
47
47
|
"scripts": {
|
|
48
|
-
"build": "tsup",
|
|
48
|
+
"build": "tsup && tsup --config tsup.web.config.ts",
|
|
49
|
+
"build:web": "tsup --config tsup.web.config.ts",
|
|
49
50
|
"dev": "tsup --watch",
|
|
50
51
|
"typecheck": "tsc --noEmit",
|
|
51
52
|
"test": "vitest run",
|
|
@@ -61,7 +62,9 @@
|
|
|
61
62
|
"prepublishOnly": "npm run build"
|
|
62
63
|
},
|
|
63
64
|
"dependencies": {
|
|
65
|
+
"@roamhq/wrtc": "^0.10.0",
|
|
64
66
|
"@whiskeysockets/baileys": "7.0.0-rc.9",
|
|
67
|
+
"@xyflow/react": "^12.10.2",
|
|
65
68
|
"chalk": "5.2.0",
|
|
66
69
|
"commander": "^10.0.0",
|
|
67
70
|
"cosmiconfig": "^8.1.3",
|
|
@@ -74,11 +77,15 @@
|
|
|
74
77
|
"prompts": "^2.4.2",
|
|
75
78
|
"qrcode": "^1.5.4",
|
|
76
79
|
"qrcode-terminal": "^0.12.0",
|
|
80
|
+
"react": "^18.3.1",
|
|
81
|
+
"react-dom": "^18.3.1",
|
|
77
82
|
"zod": "^3.20.2"
|
|
78
83
|
},
|
|
79
84
|
"devDependencies": {
|
|
80
85
|
"@types/fs-extra": "^11.0.1",
|
|
81
86
|
"@types/prompts": "^2.4.2",
|
|
87
|
+
"@types/react": "^18.3.28",
|
|
88
|
+
"@types/react-dom": "^18.3.7",
|
|
82
89
|
"lucide-static": "^1.8.0",
|
|
83
90
|
"mermaid": "^11.14.0",
|
|
84
91
|
"prettier": "^3.0.0",
|
package/dist/agent-LRSSVFDR.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{s as a,t as b,u as c}from"./chunk-AU37OREL.js";import"./chunk-SFQUP3BP.js";import"./chunk-RB7265LO.js";import"./chunk-KXZMYLHQ.js";import"./chunk-M7HKBG3V.js";import"./chunk-MCJUAE6V.js";import"./chunk-DSYKYZMT.js";import"./chunk-QOYAX2FT.js";import"./chunk-FIOB3MEX.js";export{a as createAgentContext,b as generate,c as generateStream};
|
|
2
|
-
//# sourceMappingURL=agent-LRSSVFDR.js.map
|