@unclick/mcp-server 0.2.5 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +160 -139
  2. package/dist/abn-tool.js +1 -1
  3. package/dist/bgg-tool.js +1 -1
  4. package/dist/carboninterface-tool.js +1 -1
  5. package/dist/cards/card.d.ts +9 -0
  6. package/dist/cards/card.d.ts.map +1 -0
  7. package/dist/cards/card.js +4 -0
  8. package/dist/cards/card.js.map +1 -0
  9. package/dist/cards/search-memory-card.d.ts +11 -0
  10. package/dist/cards/search-memory-card.d.ts.map +1 -0
  11. package/dist/cards/search-memory-card.js +75 -0
  12. package/dist/cards/search-memory-card.js.map +1 -0
  13. package/dist/cards/search-memory-card.test.d.ts +2 -0
  14. package/dist/cards/search-memory-card.test.d.ts.map +1 -0
  15. package/dist/cards/search-memory-card.test.js +59 -0
  16. package/dist/cards/search-memory-card.test.js.map +1 -0
  17. package/dist/catalog.d.ts.map +1 -1
  18. package/dist/catalog.js +265 -4
  19. package/dist/catalog.js.map +1 -1
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +96 -6
  22. package/dist/client.js.map +1 -1
  23. package/dist/converter-tools.js +1 -1
  24. package/dist/crews-tool.d.ts +12 -0
  25. package/dist/crews-tool.d.ts.map +1 -0
  26. package/dist/crews-tool.js +125 -0
  27. package/dist/crews-tool.js.map +1 -0
  28. package/dist/gdelt-tool.js +4 -4
  29. package/dist/hackernews-tool.js +1 -1
  30. package/dist/index.js +0 -0
  31. package/dist/keychain-secure-input.js +42 -42
  32. package/dist/line-tool.js +1 -1
  33. package/dist/linear-tool.js +73 -73
  34. package/dist/local-catalog-handlers.js +1 -1
  35. package/dist/local-catalog-handlers.js.map +1 -1
  36. package/dist/local-tools.js +7 -7
  37. package/dist/local-tools.js.map +1 -1
  38. package/dist/memory/__tests__/bitemporal.test.d.ts +8 -0
  39. package/dist/memory/__tests__/bitemporal.test.d.ts.map +1 -0
  40. package/dist/memory/__tests__/bitemporal.test.js +148 -0
  41. package/dist/memory/__tests__/bitemporal.test.js.map +1 -0
  42. package/dist/memory/__tests__/hybrid-search.test.d.ts +14 -0
  43. package/dist/memory/__tests__/hybrid-search.test.d.ts.map +1 -0
  44. package/dist/memory/__tests__/hybrid-search.test.js +304 -0
  45. package/dist/memory/__tests__/hybrid-search.test.js.map +1 -0
  46. package/dist/memory/agent.d.ts +34 -0
  47. package/dist/memory/agent.d.ts.map +1 -0
  48. package/dist/memory/agent.js +69 -0
  49. package/dist/memory/agent.js.map +1 -0
  50. package/dist/memory/conflicts.d.ts +48 -0
  51. package/dist/memory/conflicts.d.ts.map +1 -0
  52. package/dist/memory/conflicts.js +209 -0
  53. package/dist/memory/conflicts.js.map +1 -0
  54. package/dist/memory/db.d.ts +25 -0
  55. package/dist/memory/db.d.ts.map +1 -0
  56. package/dist/memory/db.js +144 -0
  57. package/dist/memory/db.js.map +1 -0
  58. package/dist/memory/device.d.ts +20 -0
  59. package/dist/memory/device.d.ts.map +1 -0
  60. package/dist/memory/device.js +48 -0
  61. package/dist/memory/device.js.map +1 -0
  62. package/dist/memory/embeddings.d.ts +10 -0
  63. package/dist/memory/embeddings.d.ts.map +1 -0
  64. package/dist/memory/embeddings.js +40 -0
  65. package/dist/memory/embeddings.js.map +1 -0
  66. package/dist/memory/handlers.d.ts +11 -0
  67. package/dist/memory/handlers.d.ts.map +1 -0
  68. package/dist/memory/handlers.js +219 -0
  69. package/dist/memory/handlers.js.map +1 -0
  70. package/dist/memory/instrumentation.d.ts +38 -0
  71. package/dist/memory/instrumentation.d.ts.map +1 -0
  72. package/dist/memory/instrumentation.js +97 -0
  73. package/dist/memory/instrumentation.js.map +1 -0
  74. package/dist/memory/load-events.d.ts +18 -0
  75. package/dist/memory/load-events.d.ts.map +1 -0
  76. package/dist/memory/load-events.js +61 -0
  77. package/dist/memory/load-events.js.map +1 -0
  78. package/dist/memory/local.d.ts +40 -0
  79. package/dist/memory/local.d.ts.map +1 -0
  80. package/dist/memory/local.js +400 -0
  81. package/dist/memory/local.js.map +1 -0
  82. package/dist/memory/session-state.d.ts +37 -0
  83. package/dist/memory/session-state.d.ts.map +1 -0
  84. package/dist/memory/session-state.js +82 -0
  85. package/dist/memory/session-state.js.map +1 -0
  86. package/dist/memory/supabase.d.ts +104 -0
  87. package/dist/memory/supabase.d.ts.map +1 -0
  88. package/dist/memory/supabase.js +710 -0
  89. package/dist/memory/supabase.js.map +1 -0
  90. package/dist/memory/tenant-settings.d.ts +33 -0
  91. package/dist/memory/tenant-settings.d.ts.map +1 -0
  92. package/dist/memory/tenant-settings.js +79 -0
  93. package/dist/memory/tenant-settings.js.map +1 -0
  94. package/dist/memory/tool-awareness.d.ts +66 -0
  95. package/dist/memory/tool-awareness.d.ts.map +1 -0
  96. package/dist/memory/tool-awareness.js +307 -0
  97. package/dist/memory/tool-awareness.js.map +1 -0
  98. package/dist/memory/types.d.ts +97 -0
  99. package/dist/memory/types.d.ts.map +1 -0
  100. package/dist/memory/types.js +5 -0
  101. package/dist/memory/types.js.map +1 -0
  102. package/dist/monday-tool.js +46 -46
  103. package/dist/musicbrainz-tool.js +1 -1
  104. package/dist/musicbrainz-tool.js.map +1 -1
  105. package/dist/numbers-tool.js +2 -2
  106. package/dist/openfoodfacts-tool.js +1 -1
  107. package/dist/openmeteo-tool.js +1 -1
  108. package/dist/radiobrowser-tool.js +2 -2
  109. package/dist/server.d.ts.map +1 -1
  110. package/dist/server.js +838 -15
  111. package/dist/server.js.map +1 -1
  112. package/dist/signals/emit.d.ts +11 -0
  113. package/dist/signals/emit.d.ts.map +1 -0
  114. package/dist/signals/emit.js +26 -0
  115. package/dist/signals/emit.js.map +1 -0
  116. package/dist/testpass-tool.d.ts +12 -0
  117. package/dist/testpass-tool.d.ts.map +1 -0
  118. package/dist/testpass-tool.js +121 -0
  119. package/dist/testpass-tool.js.map +1 -0
  120. package/dist/toilets-tool.js +2 -2
  121. package/dist/tool-wiring.d.ts +320 -4
  122. package/dist/tool-wiring.d.ts.map +1 -1
  123. package/dist/tool-wiring.js +246 -5
  124. package/dist/tool-wiring.js.map +1 -1
  125. package/dist/trivia-tool.js +5 -5
  126. package/dist/usgs-tool.js +1 -1
  127. package/dist/uxpass-tool.d.ts +24 -0
  128. package/dist/uxpass-tool.d.ts.map +1 -0
  129. package/dist/uxpass-tool.js +165 -0
  130. package/dist/uxpass-tool.js.map +1 -0
  131. package/dist/vault-bridge.js +7 -7
  132. package/dist/vercel-tool.d.ts +3 -0
  133. package/dist/vercel-tool.d.ts.map +1 -1
  134. package/dist/vercel-tool.js +198 -7
  135. package/dist/vercel-tool.js.map +1 -1
  136. package/dist/web-tools.d.ts +62 -0
  137. package/dist/web-tools.d.ts.map +1 -0
  138. package/dist/web-tools.js +271 -0
  139. package/dist/web-tools.js.map +1 -0
  140. package/package.json +69 -65
  141. package/public/icon.svg +15 -15
  142. package/server.json +37 -37
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // ─── Pure-local converter tool implementations ───────────────────────────────
2
- // All run entirely inside the MCP process no API calls.
2
+ // All run entirely inside the MCP process - no API calls.
3
3
  import { marked } from "marked";
4
4
  import TurndownService from "turndown";
5
5
  import * as yaml from "js-yaml";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * crews-tool - MCP handlers for the Crews Council Orchestrator Wizard.
3
+ *
4
+ * All three tools return a ConversationalCard so the calling agent can surface
5
+ * status in plain prose without parsing raw run JSON. LLM traffic for user
6
+ * facing runs flows via MCP sampling, not via server side Anthropic calls.
7
+ */
8
+ import { type ConversationalCard } from "./cards/card.js";
9
+ export declare function crewsStartRun(args: Record<string, unknown>): Promise<ConversationalCard>;
10
+ export declare function crewsGetRun(args: Record<string, unknown>): Promise<ConversationalCard>;
11
+ export declare function crewsListRuns(args: Record<string, unknown>): Promise<ConversationalCard>;
12
+ //# sourceMappingURL=crews-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crews-tool.d.ts","sourceRoot":"","sources":["../src/crews-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAa,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAsCrE,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2C9F;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwB5F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAe9F"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * crews-tool - MCP handlers for the Crews Council Orchestrator Wizard.
3
+ *
4
+ * All three tools return a ConversationalCard so the calling agent can surface
5
+ * status in plain prose without parsing raw run JSON. LLM traffic for user
6
+ * facing runs flows via MCP sampling, not via server side Anthropic calls.
7
+ */
8
+ import { buildCard } from "./cards/card.js";
9
+ const API_BASE = (process.env.UNCLICK_API_URL ?? "https://unclick.world").replace(/\/$/, "");
10
+ function getApiKey() {
11
+ const key = process.env.UNCLICK_API_KEY?.trim();
12
+ if (!key) {
13
+ throw new Error("UNCLICK_API_KEY env var is not set. Get your install config at https://unclick.world");
14
+ }
15
+ return key;
16
+ }
17
+ async function adminCall(action, body, method, query) {
18
+ const apiKey = getApiKey();
19
+ const qs = new URLSearchParams({ action, ...(query ?? {}) }).toString();
20
+ const url = `${API_BASE}/api/memory-admin?${qs}`;
21
+ const init = {
22
+ method,
23
+ headers: {
24
+ "Content-Type": "application/json",
25
+ Authorization: `Bearer ${apiKey}`,
26
+ },
27
+ };
28
+ if (method === "POST" && body)
29
+ init.body = JSON.stringify(body);
30
+ const res = await fetch(url, init);
31
+ const text = await res.text();
32
+ let json = text;
33
+ try {
34
+ json = text ? JSON.parse(text) : null;
35
+ }
36
+ catch { /* keep text */ }
37
+ return { ok: res.ok, status: res.status, json };
38
+ }
39
+ export async function crewsStartRun(args) {
40
+ const crewId = String(args.crew_id ?? "").trim();
41
+ const taskPrompt = String(args.task_prompt ?? "").trim();
42
+ const tokenBudget = typeof args.token_budget === "number" ? args.token_budget : undefined;
43
+ if (!crewId) {
44
+ return buildCard({
45
+ headline: "start_crew_run needs a crew_id",
46
+ summary: "Provide the UUID of the Crew to run.",
47
+ keyFacts: ["missing: crew_id"],
48
+ nextActions: ["Call list_runs or browse /admin/crews to find a crew_id"],
49
+ });
50
+ }
51
+ if (!taskPrompt) {
52
+ return buildCard({
53
+ headline: "start_crew_run needs a task_prompt",
54
+ summary: "Describe what you want the Council to deliberate on.",
55
+ keyFacts: ["missing: task_prompt"],
56
+ nextActions: ["Retry with a task_prompt of at least one sentence"],
57
+ });
58
+ }
59
+ const body = { crew_id: crewId, task_prompt: taskPrompt };
60
+ if (tokenBudget)
61
+ body.token_budget = tokenBudget;
62
+ const { ok, status, json } = await adminCall("start_crew_run", body, "POST");
63
+ const payload = (json ?? {});
64
+ if (payload.card)
65
+ return payload.card;
66
+ if (!ok) {
67
+ return buildCard({
68
+ headline: `start_crew_run failed (HTTP ${status})`,
69
+ summary: payload.message ?? "The admin API rejected the request.",
70
+ keyFacts: [
71
+ `http_status: ${status}`,
72
+ ...(payload.error ? [`error: ${payload.error}`] : []),
73
+ ],
74
+ nextActions: ["Check Vercel logs", "Confirm your UNCLICK_API_KEY is valid"],
75
+ });
76
+ }
77
+ return buildCard({
78
+ headline: "Crews run accepted",
79
+ summary: "The run row was created. Poll get_run to follow progress.",
80
+ keyFacts: payload.run_id ? [`run_id: ${payload.run_id}`] : [],
81
+ nextActions: ["Call get_run with the run_id to check status"],
82
+ deepLink: payload.run_id ? `/admin/crews/runs/${payload.run_id}` : undefined,
83
+ });
84
+ }
85
+ export async function crewsGetRun(args) {
86
+ const runId = String(args.run_id ?? "").trim();
87
+ if (!runId) {
88
+ return buildCard({
89
+ headline: "get_run needs a run_id",
90
+ summary: "Provide the run_id returned by start_crew_run.",
91
+ keyFacts: ["missing: run_id"],
92
+ nextActions: ["Call list_runs to find recent run ids"],
93
+ });
94
+ }
95
+ const { ok, status, json } = await adminCall("get_run", null, "GET", { run_id: runId });
96
+ const payload = (json ?? {});
97
+ if (payload.card)
98
+ return payload.card;
99
+ return buildCard({
100
+ headline: `get_run failed (HTTP ${status})`,
101
+ summary: payload.message ?? (ok ? "No card returned." : "Admin API rejected the request."),
102
+ keyFacts: [`http_status: ${status}`, `run_id: ${runId}`],
103
+ nextActions: ["Verify the run_id belongs to your API key", "Check Vercel logs"],
104
+ });
105
+ }
106
+ export async function crewsListRuns(args) {
107
+ const crewId = args.crew_id ? String(args.crew_id).trim() : undefined;
108
+ const limit = typeof args.limit === "number" ? String(args.limit) : undefined;
109
+ const query = {};
110
+ if (crewId)
111
+ query.crew_id = crewId;
112
+ if (limit)
113
+ query.limit = limit;
114
+ const { ok, status, json } = await adminCall("list_runs", null, "GET", query);
115
+ const payload = (json ?? {});
116
+ if (payload.card)
117
+ return payload.card;
118
+ return buildCard({
119
+ headline: `list_runs failed (HTTP ${status})`,
120
+ summary: payload.message ?? (ok ? "No card returned." : "Admin API rejected the request."),
121
+ keyFacts: [`http_status: ${status}`],
122
+ nextActions: ["Check Vercel logs", "Confirm your UNCLICK_API_KEY is valid"],
123
+ });
124
+ }
125
+ //# sourceMappingURL=crews-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crews-tool.js","sourceRoot":"","sources":["../src/crews-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAA2B,MAAM,iBAAiB,CAAC;AAErE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAE7F,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,IAAoC,EACpC,MAAsB,EACtB,KAA8B;IAE9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,MAAM,GAAG,GAAG,GAAG,QAAQ,qBAAqB,EAAE,EAAE,CAAC;IACjD,MAAM,IAAI,GAAgB;QACxB,MAAM;QACN,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,EAAE;SAClC;KACF,CAAC;IACF,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAY,IAAI,CAAC;IACzB,IAAI,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA6B;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;YACf,QAAQ,EAAE,gCAAgC;YAC1C,OAAO,EAAE,sCAAsC;YAC/C,QAAQ,EAAE,CAAC,kBAAkB,CAAC;YAC9B,WAAW,EAAE,CAAC,yDAAyD,CAAC;SACzE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;YACf,QAAQ,EAAE,oCAAoC;YAC9C,OAAO,EAAE,sDAAsD;YAC/D,QAAQ,EAAE,CAAC,sBAAsB,CAAC;YAClC,WAAW,EAAE,CAAC,mDAAmD,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAA4B,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;IACnF,IAAI,WAAW;QAAE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACjD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAc,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,SAAS,CAAC;YACf,QAAQ,EAAE,+BAA+B,MAAM,GAAG;YAClD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,qCAAqC;YACjE,QAAQ,EAAE;gBACR,gBAAgB,MAAM,EAAE;gBACxB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD;YACD,WAAW,EAAE,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;SAC5E,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;QACf,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE,2DAA2D;QACpE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QAC7D,WAAW,EAAE,CAAC,8CAA8C,CAAC;QAC7D,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAA6B;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;YACf,QAAQ,EAAE,wBAAwB;YAClC,OAAO,EAAE,gDAAgD;YACzD,QAAQ,EAAE,CAAC,iBAAiB,CAAC;YAC7B,WAAW,EAAE,CAAC,uCAAuC,CAAC;SACvD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAC1C,SAAS,EACT,IAAI,EACJ,KAAK,EACL,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAc,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IACtC,OAAO,SAAS,CAAC;QACf,QAAQ,EAAE,wBAAwB,MAAM,GAAG;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iCAAiC,CAAC;QAC1F,QAAQ,EAAE,CAAC,gBAAgB,MAAM,EAAE,EAAE,WAAW,KAAK,EAAE,CAAC;QACxD,WAAW,EAAE,CAAC,2CAA2C,EAAE,mBAAmB,CAAC;KAChF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA6B;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,MAAM;QAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACnC,IAAI,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAc,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IACtC,OAAO,SAAS,CAAC;QACf,QAAQ,EAAE,0BAA0B,MAAM,GAAG;QAC7C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iCAAiC,CAAC;QAC1F,QAAQ,EAAE,CAAC,gBAAgB,MAAM,EAAE,CAAC;QACpC,WAAW,EAAE,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- // GDELT Project integration global news intelligence, no auth required.
1
+ // GDELT Project integration - global news intelligence, no auth required.
2
2
  // Docs: https://www.gdeltproject.org/
3
3
  // DOC API: https://api.gdeltproject.org/api/v2/doc/doc
4
4
  // GEO API: https://api.gdeltproject.org/api/v2/geo/geo
@@ -52,7 +52,7 @@ export async function gdeltNewsSearch(args) {
52
52
  };
53
53
  }
54
54
  // ─── gdelt_tone_analysis ──────────────────────────────────────────────────────
55
- // Uses timelinetone mode returns average tone score over time.
55
+ // Uses timelinetone mode - returns average tone score over time.
56
56
  // Negative values = negative sentiment; positive = positive sentiment.
57
57
  export async function gdeltToneAnalysis(args) {
58
58
  const query = String(args.query ?? "").trim();
@@ -100,7 +100,7 @@ export async function gdeltToneAnalysis(args) {
100
100
  };
101
101
  }
102
102
  // ─── gdelt_geo_events ─────────────────────────────────────────────────────────
103
- // Uses the GDELT GEO API returns geographic event clusters with article counts and tone.
103
+ // Uses the GDELT GEO API - returns geographic event clusters with article counts and tone.
104
104
  export async function gdeltGeoEvents(args) {
105
105
  const query = String(args.query ?? "").trim();
106
106
  if (!query)
@@ -132,7 +132,7 @@ export async function gdeltGeoEvents(args) {
132
132
  };
133
133
  }
134
134
  // ─── gdelt_trending ───────────────────────────────────────────────────────────
135
- // Uses timelinevol mode returns article volume over time for a query.
135
+ // Uses timelinevol mode - returns article volume over time for a query.
136
136
  // Shows whether a topic is surging, stable, or fading in the news cycle.
137
137
  export async function gdeltTrending(args) {
138
138
  const query = String(args.query ?? "").trim();
@@ -1,5 +1,5 @@
1
1
  // Hacker News Firebase API integration.
2
- // No authentication required completely open.
2
+ // No authentication required - completely open.
3
3
  // Base URL: https://hacker-news.firebaseio.com/v0/
4
4
  const HN_BASE = "https://hacker-news.firebaseio.com/v0";
5
5
  // ─── API helper ───────────────────────────────────────────────────────────────
package/dist/index.js CHANGED
File without changes
@@ -83,48 +83,48 @@ function buildHtml(platform, nonce, setupUrl) {
83
83
  const setupLink = setupUrl
84
84
  ? ` <a href="${setupUrl}" target="_blank">Get your key here</a>.`
85
85
  : "";
86
- return `<!DOCTYPE html>
87
- <html><head>
88
- <title>UnClick BackstagePass - Connect ${platform}</title>
89
- <meta charset="utf-8">
90
- <style>
91
- * { margin: 0; padding: 0; box-sizing: border-box; }
92
- body { background: #0a0a0a; color: #e0e0e0; font-family: -apple-system, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; }
93
- .card { background: #1a1a1a; border: 1px solid #333; border-radius: 12px; padding: 40px; max-width: 480px; width: 100%; }
94
- h1 { font-size: 20px; margin-bottom: 8px; color: #61c1c4; }
95
- p { font-size: 14px; color: #888; margin-bottom: 24px; }
96
- a { color: #61c1c4; }
97
- label { font-size: 13px; color: #aaa; display: block; margin-bottom: 8px; }
98
- input[type="password"] { width: 100%; padding: 12px; background: #111; border: 1px solid #333; border-radius: 8px; color: #fff; font-size: 14px; font-family: monospace; }
99
- input:focus { outline: none; border-color: #61c1c4; }
100
- button { width: 100%; padding: 12px; background: #61c1c4; color: #0a0a0a; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; margin-top: 16px; }
101
- button:hover { background: #4fa8ab; }
102
- .note { font-size: 12px; color: #555; margin-top: 16px; text-align: center; }
103
- .success { text-align: center; }
104
- .success h1 { font-size: 24px; margin-bottom: 16px; }
105
- </style>
106
- </head><body>
107
- <div class="card" id="form">
108
- <h1>Connect ${platform}</h1>
109
- <p>Paste your API key below. It will be encrypted and stored securely. This page closes automatically after submission.${setupLink}</p>
110
- <label>API Key</label>
111
- <input type="password" id="key" placeholder="Paste your key here" autofocus>
112
- <button onclick="submit()">Connect</button>
113
- <div class="note">Your key goes directly to local encryption. It never appears in your AI chat.</div>
114
- </div>
115
- <div class="card success" id="done" style="display:none">
116
- <h1>Connected</h1>
117
- <p>Your ${platform} key has been encrypted and stored. You can close this tab.</p>
118
- </div>
119
- <script>
120
- async function submit() {
121
- const key = document.getElementById('key').value.trim();
122
- if (!key) return;
123
- const res = await fetch('/submit', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({key, nonce:'${nonce}'}) });
124
- if (res.ok) { document.getElementById('form').style.display='none'; document.getElementById('done').style.display='block'; setTimeout(() => window.close(), 2000); }
125
- }
126
- document.getElementById('key').addEventListener('keydown', e => { if (e.key === 'Enter') submit(); });
127
- </script>
86
+ return `<!DOCTYPE html>
87
+ <html><head>
88
+ <title>UnClick BackstagePass - Connect ${platform}</title>
89
+ <meta charset="utf-8">
90
+ <style>
91
+ * { margin: 0; padding: 0; box-sizing: border-box; }
92
+ body { background: #0a0a0a; color: #e0e0e0; font-family: -apple-system, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; }
93
+ .card { background: #1a1a1a; border: 1px solid #333; border-radius: 12px; padding: 40px; max-width: 480px; width: 100%; }
94
+ h1 { font-size: 20px; margin-bottom: 8px; color: #61c1c4; }
95
+ p { font-size: 14px; color: #888; margin-bottom: 24px; }
96
+ a { color: #61c1c4; }
97
+ label { font-size: 13px; color: #aaa; display: block; margin-bottom: 8px; }
98
+ input[type="password"] { width: 100%; padding: 12px; background: #111; border: 1px solid #333; border-radius: 8px; color: #fff; font-size: 14px; font-family: monospace; }
99
+ input:focus { outline: none; border-color: #61c1c4; }
100
+ button { width: 100%; padding: 12px; background: #61c1c4; color: #0a0a0a; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; margin-top: 16px; }
101
+ button:hover { background: #4fa8ab; }
102
+ .note { font-size: 12px; color: #555; margin-top: 16px; text-align: center; }
103
+ .success { text-align: center; }
104
+ .success h1 { font-size: 24px; margin-bottom: 16px; }
105
+ </style>
106
+ </head><body>
107
+ <div class="card" id="form">
108
+ <h1>Connect ${platform}</h1>
109
+ <p>Paste your API key below. It will be encrypted and stored securely. This page closes automatically after submission.${setupLink}</p>
110
+ <label>API Key</label>
111
+ <input type="password" id="key" placeholder="Paste your key here" autofocus>
112
+ <button onclick="submit()">Connect</button>
113
+ <div class="note">Your key goes directly to local encryption. It never appears in your AI chat.</div>
114
+ </div>
115
+ <div class="card success" id="done" style="display:none">
116
+ <h1>Connected</h1>
117
+ <p>Your ${platform} key has been encrypted and stored. You can close this tab.</p>
118
+ </div>
119
+ <script>
120
+ async function submit() {
121
+ const key = document.getElementById('key').value.trim();
122
+ if (!key) return;
123
+ const res = await fetch('/submit', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({key, nonce:'${nonce}'}) });
124
+ if (res.ok) { document.getElementById('form').style.display='none'; document.getElementById('done').style.display='block'; setTimeout(() => window.close(), 2000); }
125
+ }
126
+ document.getElementById('key').addEventListener('keydown', e => { if (e.key === 'Enter') submit(); });
127
+ </script>
128
128
  </body></html>`;
129
129
  }
130
130
  // Start a localhost server for the given platform. Stores result in resolvedCredentials when submitted.
package/dist/line-tool.js CHANGED
@@ -24,7 +24,7 @@ async function linePost(token, path, body) {
24
24
  const detail = data.details
25
25
  ?.map((d) => d.message)
26
26
  .join("; ");
27
- throw new Error(`LINE API error: ${msg}${detail ? ` ${detail}` : ""}`);
27
+ throw new Error(`LINE API error: ${msg}${detail ? ` - ${detail}` : ""}`);
28
28
  }
29
29
  return data;
30
30
  }
@@ -52,24 +52,24 @@ async function listIssues(apiKey, args) {
52
52
  if (stateId)
53
53
  filter.state = { id: { eq: stateId } };
54
54
  const hasFilter = Object.keys(filter).length > 0;
55
- return linearQuery(apiKey, `
56
- query ListIssues($first: Int, $filter: IssueFilter) {
57
- issues(first: $first, filter: $filter) {
58
- nodes {
59
- id
60
- identifier
61
- title
62
- description
63
- priority
64
- state { name }
65
- assignee { name email }
66
- team { name }
67
- createdAt
68
- updatedAt
69
- url
70
- }
71
- }
72
- }
55
+ return linearQuery(apiKey, `
56
+ query ListIssues($first: Int, $filter: IssueFilter) {
57
+ issues(first: $first, filter: $filter) {
58
+ nodes {
59
+ id
60
+ identifier
61
+ title
62
+ description
63
+ priority
64
+ state { name }
65
+ assignee { name email }
66
+ team { name }
67
+ createdAt
68
+ updatedAt
69
+ url
70
+ }
71
+ }
72
+ }
73
73
  `, { first, filter: hasFilter ? filter : undefined });
74
74
  }
75
75
  async function createIssue(apiKey, args) {
@@ -88,54 +88,54 @@ async function createIssue(apiKey, args) {
88
88
  input.assigneeId = String(args.assignee_id);
89
89
  if (args.state_id)
90
90
  input.stateId = String(args.state_id);
91
- return linearQuery(apiKey, `
92
- mutation CreateIssue($input: IssueCreateInput!) {
93
- issueCreate(input: $input) {
94
- success
95
- issue {
96
- id
97
- identifier
98
- title
99
- url
100
- state { name }
101
- }
102
- }
103
- }
91
+ return linearQuery(apiKey, `
92
+ mutation CreateIssue($input: IssueCreateInput!) {
93
+ issueCreate(input: $input) {
94
+ success
95
+ issue {
96
+ id
97
+ identifier
98
+ title
99
+ url
100
+ state { name }
101
+ }
102
+ }
103
+ }
104
104
  `, { input });
105
105
  }
106
106
  async function getProject(apiKey, args) {
107
107
  const id = String(args.project_id ?? "").trim();
108
108
  if (!id)
109
109
  return { error: "project_id is required." };
110
- return linearQuery(apiKey, `
111
- query GetProject($id: String!) {
112
- project(id: $id) {
113
- id
114
- name
115
- description
116
- state
117
- progress
118
- startDate
119
- targetDate
120
- url
121
- teams { nodes { id name } }
122
- }
123
- }
110
+ return linearQuery(apiKey, `
111
+ query GetProject($id: String!) {
112
+ project(id: $id) {
113
+ id
114
+ name
115
+ description
116
+ state
117
+ progress
118
+ startDate
119
+ targetDate
120
+ url
121
+ teams { nodes { id name } }
122
+ }
123
+ }
124
124
  `, { id });
125
125
  }
126
126
  async function listTeams(apiKey) {
127
- return linearQuery(apiKey, `
128
- query ListTeams {
129
- teams {
130
- nodes {
131
- id
132
- name
133
- description
134
- key
135
- timezone
136
- }
137
- }
138
- }
127
+ return linearQuery(apiKey, `
128
+ query ListTeams {
129
+ teams {
130
+ nodes {
131
+ id
132
+ name
133
+ description
134
+ key
135
+ timezone
136
+ }
137
+ }
138
+ }
139
139
  `);
140
140
  }
141
141
  async function searchIssues(apiKey, args) {
@@ -143,22 +143,22 @@ async function searchIssues(apiKey, args) {
143
143
  const first = args.first ? Number(args.first) : 25;
144
144
  if (!term)
145
145
  return { error: "query is required." };
146
- return linearQuery(apiKey, `
147
- query SearchIssues($term: String!, $first: Int) {
148
- issueSearch(term: $term, first: $first) {
149
- nodes {
150
- id
151
- identifier
152
- title
153
- description
154
- priority
155
- state { name }
156
- assignee { name }
157
- team { name }
158
- url
159
- }
160
- }
161
- }
146
+ return linearQuery(apiKey, `
147
+ query SearchIssues($term: String!, $first: Int) {
148
+ issueSearch(term: $term, first: $first) {
149
+ nodes {
150
+ id
151
+ identifier
152
+ title
153
+ description
154
+ priority
155
+ state { name }
156
+ assignee { name }
157
+ team { name }
158
+ url
159
+ }
160
+ }
161
+ }
162
162
  `, { term, first });
163
163
  }
164
164
  // ── Public dispatcher ──────────────────────────────────────────────────────────
@@ -1043,7 +1043,7 @@ export const LOCAL_CATALOG_HANDLERS = {
1043
1043
  if (isNaN(d.getTime()))
1044
1044
  return { error: `Cannot parse timestamp: ${ts}` };
1045
1045
  const dur = (args.duration ?? {});
1046
- let ms = d.getTime() + (dur.seconds ?? 0) * 1000 + (dur.minutes ?? 0) * 60000 + (dur.hours ?? 0) * 3600000 + (dur.days ?? 0) * 86400000 + (dur.weeks ?? 0) * 604800000;
1046
+ const ms = d.getTime() + (dur.seconds ?? 0) * 1000 + (dur.minutes ?? 0) * 60000 + (dur.hours ?? 0) * 3600000 + (dur.days ?? 0) * 86400000 + (dur.weeks ?? 0) * 604800000;
1047
1047
  const result = new Date(ms);
1048
1048
  if (dur.months)
1049
1049
  result.setMonth(result.getMonth() + dur.months);