agenthub-multiagent-mcp 1.75.0 → 1.76.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.
Files changed (100) hide show
  1. package/dist/client.d.ts +19 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +31 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/setup-shell.js +11 -11
  6. package/dist/employee.d.ts +11 -0
  7. package/dist/employee.d.ts.map +1 -1
  8. package/dist/employee.js +64 -1
  9. package/dist/employee.js.map +1 -1
  10. package/dist/employee.test.js +88 -1
  11. package/dist/employee.test.js.map +1 -1
  12. package/dist/goshtiChannel/client.d.ts +9 -0
  13. package/dist/goshtiChannel/client.d.ts.map +1 -0
  14. package/dist/goshtiChannel/client.js +63 -0
  15. package/dist/goshtiChannel/client.js.map +1 -0
  16. package/dist/goshtiChannel/config.d.ts +42 -0
  17. package/dist/goshtiChannel/config.d.ts.map +1 -0
  18. package/dist/goshtiChannel/config.js +129 -0
  19. package/dist/goshtiChannel/config.js.map +1 -0
  20. package/dist/goshtiChannel/config.test.d.ts +2 -0
  21. package/dist/goshtiChannel/config.test.d.ts.map +1 -0
  22. package/dist/goshtiChannel/config.test.js +73 -0
  23. package/dist/goshtiChannel/config.test.js.map +1 -0
  24. package/dist/goshtiChannel/core.d.ts +63 -0
  25. package/dist/goshtiChannel/core.d.ts.map +1 -0
  26. package/dist/goshtiChannel/core.js +237 -0
  27. package/dist/goshtiChannel/core.js.map +1 -0
  28. package/dist/goshtiChannel/core.test.d.ts +2 -0
  29. package/dist/goshtiChannel/core.test.d.ts.map +1 -0
  30. package/dist/goshtiChannel/core.test.js +250 -0
  31. package/dist/goshtiChannel/core.test.js.map +1 -0
  32. package/dist/goshtiChannel/credential.d.ts +29 -0
  33. package/dist/goshtiChannel/credential.d.ts.map +1 -0
  34. package/dist/goshtiChannel/credential.js +160 -0
  35. package/dist/goshtiChannel/credential.js.map +1 -0
  36. package/dist/goshtiChannel/credential.test.d.ts +2 -0
  37. package/dist/goshtiChannel/credential.test.d.ts.map +1 -0
  38. package/dist/goshtiChannel/credential.test.js +127 -0
  39. package/dist/goshtiChannel/credential.test.js.map +1 -0
  40. package/dist/goshtiChannel/e2e.test.d.ts +2 -0
  41. package/dist/goshtiChannel/e2e.test.d.ts.map +1 -0
  42. package/dist/goshtiChannel/e2e.test.js +163 -0
  43. package/dist/goshtiChannel/e2e.test.js.map +1 -0
  44. package/dist/goshtiChannel/policy.d.ts +154 -0
  45. package/dist/goshtiChannel/policy.d.ts.map +1 -0
  46. package/dist/goshtiChannel/policy.js +240 -0
  47. package/dist/goshtiChannel/policy.js.map +1 -0
  48. package/dist/goshtiChannel/policy.test.d.ts +2 -0
  49. package/dist/goshtiChannel/policy.test.d.ts.map +1 -0
  50. package/dist/goshtiChannel/policy.test.js +263 -0
  51. package/dist/goshtiChannel/policy.test.js.map +1 -0
  52. package/dist/goshtiChannel/setup.d.ts +15 -0
  53. package/dist/goshtiChannel/setup.d.ts.map +1 -0
  54. package/dist/goshtiChannel/setup.js +125 -0
  55. package/dist/goshtiChannel/setup.js.map +1 -0
  56. package/dist/goshtiChannel/setup.test.d.ts +2 -0
  57. package/dist/goshtiChannel/setup.test.d.ts.map +1 -0
  58. package/dist/goshtiChannel/setup.test.js +96 -0
  59. package/dist/goshtiChannel/setup.test.js.map +1 -0
  60. package/dist/goshtiChannel/stream.d.ts +39 -0
  61. package/dist/goshtiChannel/stream.d.ts.map +1 -0
  62. package/dist/goshtiChannel/stream.js +174 -0
  63. package/dist/goshtiChannel/stream.js.map +1 -0
  64. package/dist/goshtiChannel/stream.test.d.ts +2 -0
  65. package/dist/goshtiChannel/stream.test.d.ts.map +1 -0
  66. package/dist/goshtiChannel/stream.test.js +164 -0
  67. package/dist/goshtiChannel/stream.test.js.map +1 -0
  68. package/dist/goshtiChannel.d.ts +22 -0
  69. package/dist/goshtiChannel.d.ts.map +1 -0
  70. package/dist/goshtiChannel.js +193 -0
  71. package/dist/goshtiChannel.js.map +1 -0
  72. package/dist/state.d.ts +2 -0
  73. package/dist/state.d.ts.map +1 -1
  74. package/dist/state.js.map +1 -1
  75. package/dist/tools/brainWriteCheck.test.d.ts +10 -0
  76. package/dist/tools/brainWriteCheck.test.d.ts.map +1 -0
  77. package/dist/tools/brainWriteCheck.test.js +67 -0
  78. package/dist/tools/brainWriteCheck.test.js.map +1 -0
  79. package/dist/tools/employeeTraining.d.ts +46 -0
  80. package/dist/tools/employeeTraining.d.ts.map +1 -0
  81. package/dist/tools/employeeTraining.js +329 -0
  82. package/dist/tools/employeeTraining.js.map +1 -0
  83. package/dist/tools/employeeTraining.test.d.ts +7 -0
  84. package/dist/tools/employeeTraining.test.d.ts.map +1 -0
  85. package/dist/tools/employeeTraining.test.js +190 -0
  86. package/dist/tools/employeeTraining.test.js.map +1 -0
  87. package/dist/tools/index.d.ts.map +1 -1
  88. package/dist/tools/index.js +146 -1
  89. package/dist/tools/index.js.map +1 -1
  90. package/dist/tools/runs.d.ts +43 -0
  91. package/dist/tools/runs.d.ts.map +1 -0
  92. package/dist/tools/runs.js +280 -0
  93. package/dist/tools/runs.js.map +1 -0
  94. package/dist/tools/runs.test.d.ts +9 -0
  95. package/dist/tools/runs.test.d.ts.map +1 -0
  96. package/dist/tools/runs.test.js +114 -0
  97. package/dist/tools/runs.test.js.map +1 -0
  98. package/dist/tools/tools.test.js +54 -2
  99. package/dist/tools/tools.test.js.map +1 -1
  100. package/package.json +79 -78
@@ -1 +1 @@
1
- {"version":3,"file":"employee.js","sourceRoot":"","sources":["../src/employee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"employee.js","sourceRoot":"","sources":["../src/employee.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { fetchEmployee, buildShiftPrompt, buildFastSystemPrompt, ENG_IC_CHARTER, } from "./employee.js";
2
+ import { fetchEmployee, buildShiftPrompt, buildFastSystemPrompt, ENG_IC_CHARTER, CHARTER_TEMPLATES, renderCapabilityBoundary, } from "./employee.js";
3
3
  // add-ai-agent-employees §1 — the employee layer must (a) never break the
4
4
  // plain daemon when the agent isn't an employee / the feature is off, and
5
5
  // (b) render shift prompts that carry the charter + tier supervision rules.
@@ -132,4 +132,91 @@ describe("buildFastSystemPrompt", () => {
132
132
  expect(p).toMatch(/cannot take actions|handled as a task/i);
133
133
  });
134
134
  });
135
+ // add-charter-guardrail-consistency §1 — the shift prompt carries a boundary
136
+ // block generated from the guardrails, so the model reads what the policy
137
+ // engine enforces rather than what the prose says.
138
+ describe("renderCapabilityBoundary", () => {
139
+ it("lists allowed, break-glass, and denies everything else (spec scenario)", () => {
140
+ const b = renderCapabilityBoundary({
141
+ allowed_capabilities: ["slack_dm", "report_bug"],
142
+ break_glass: ["email"],
143
+ });
144
+ expect(b).toContain("CAPABILITY BOUNDARY");
145
+ expect(b).toMatch(/MAY use: slack_dm, report_bug/);
146
+ expect(b).toMatch(/break-glass[^\n]*email/i);
147
+ expect(b).toMatch(/Everything else is DENIED/);
148
+ });
149
+ it("is honest that a break-glass entry outside the allowed list is denied", () => {
150
+ const b = renderCapabilityBoundary({ allowed_capabilities: ["slack_dm"], break_glass: ["email"] });
151
+ expect(b).toMatch(/break-glass but not in your allowed list, so they are denied outright: email/);
152
+ expect(b).not.toMatch(/require human approval[^\n]*email/i);
153
+ });
154
+ it("marks a break-glass entry inside the allowed list as approval-required", () => {
155
+ const b = renderCapabilityBoundary({
156
+ allowed_capabilities: ["gh-pr-read", "deploy-staging"],
157
+ break_glass: ["deploy-staging"],
158
+ });
159
+ expect(b).toMatch(/MAY use: gh-pr-read\b/);
160
+ expect(b).toMatch(/require human approval[^\n]*deploy-staging/i);
161
+ expect(b).not.toMatch(/deploy-staging[^\n]*denied/i);
162
+ });
163
+ it("renders a wildcard honestly — all capabilities, not a narrower set", () => {
164
+ const b = renderCapabilityBoundary({ allowed_capabilities: ["*"], break_glass: ["deploy-staging"] });
165
+ expect(b).toMatch(/MAY use: ALL capabilities/);
166
+ expect(b).not.toMatch(/Everything else is DENIED/);
167
+ expect(b).toMatch(/require human approval[^\n]*deploy-staging/i);
168
+ });
169
+ it("states an empty allow-list denies everything", () => {
170
+ const b = renderCapabilityBoundary({});
171
+ expect(b).toMatch(/MAY use: none/);
172
+ expect(b).toMatch(/every capability is DENIED/i);
173
+ });
174
+ it("accepts guardrails as a JSON string", () => {
175
+ expect(renderCapabilityBoundary('{"allowed_capabilities":["gh-pr-read"]}')).toMatch(/MAY use: gh-pr-read/);
176
+ });
177
+ it("fails closed on unreadable guardrails, as the policy engine does", () => {
178
+ expect(renderCapabilityBoundary("{not json")).toMatch(/could not be read[^\n]*DENIED/i);
179
+ expect(renderCapabilityBoundary(42)).toMatch(/could not be read/i);
180
+ });
181
+ it("is appended to the shift prompt after the standing rules", () => {
182
+ const c = ctx("junior");
183
+ c.charter.guardrails = { allowed_capabilities: ["gh-pr-read"], break_glass: [] };
184
+ const p = buildShiftPrompt(c, { kind: "task", taskId: "t1", task: "X" });
185
+ const rules = p.indexOf("STANDING RULES");
186
+ const block = p.indexOf("CAPABILITY BOUNDARY");
187
+ const trigger = p.indexOf("TRIGGER");
188
+ expect(rules).toBeGreaterThanOrEqual(0);
189
+ expect(block).toBeGreaterThan(rules);
190
+ expect(trigger).toBeGreaterThan(block);
191
+ expect(p).toMatch(/MAY use: gh-pr-read/);
192
+ });
193
+ it("is on message shifts too", () => {
194
+ const p = buildShiftPrompt(ctx("senior"), {
195
+ kind: "message", fromAgent: "a", subject: "s", body: "b", messageId: "m1",
196
+ });
197
+ expect(p).toContain("CAPABILITY BOUNDARY");
198
+ });
199
+ });
200
+ describe("MCP charter templates are structurally consistent", () => {
201
+ const templates = [
202
+ ["ENG_IC_CHARTER", ENG_IC_CHARTER.guardrails],
203
+ ...Object.entries(CHARTER_TEMPLATES).map(([k, v]) => [k, v.guardrails]),
204
+ ];
205
+ // Known findings awaiting the owner's decision — listed in the PR for
206
+ // add-charter-guardrail-consistency. Remove a name when its template is fixed.
207
+ const knownUnjustifiedWildcards = new Set(["ENG_IC_CHARTER", "Platform Ops", "Coordinator"]);
208
+ it.each(templates)("%s: break_glass ⊆ allowed_capabilities", (_name, g) => {
209
+ const allowed = g.allowed_capabilities ?? [];
210
+ if (allowed.includes("*"))
211
+ return;
212
+ for (const b of g.break_glass ?? [])
213
+ expect(allowed).toContain(b);
214
+ });
215
+ it.each(templates)("%s: a wildcard is justified or a known finding", (name, g) => {
216
+ const wildcard = (g.allowed_capabilities ?? []).includes("*");
217
+ if (!wildcard || (g.wildcard_justification ?? "").trim())
218
+ return;
219
+ expect(knownUnjustifiedWildcards.has(name)).toBe(true);
220
+ });
221
+ });
135
222
  //# sourceMappingURL=employee.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"employee.test.js","sourceRoot":"","sources":["../src/employee.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"employee.test.js","sourceRoot":"","sources":["../src/employee.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AAEvB,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAE5E,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,IAAI;QACJ,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE;YACP,EAAE,EAAE,MAAM;YACV,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,0BAA0B;YACnC,KAAK,EAAE,wBAAwB;YAC/B,UAAU,EAAE,EAAE,oBAAoB,EAAE,CAAC,GAAG,CAAC,EAAE;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,SAAmC,CAAC;IACxC,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACpB,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEvC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,SAAS,CAAC,iBAAiB,CACzB,IAAI,QAAQ,CACV,IAAI,CAAC,SAAS,CAAC;YACb,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACzE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;SAC/E,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CACF,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACvE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,sBAAsB;QACtB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QACzD,MAAM,CAAE,IAAoB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sDAAsD,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3F,SAAS,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,SAAS,CAAC,iBAAiB,CACzB,IAAI,QAAQ,CACV,IAAI,CAAC,SAAS,CAAC;YACb,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YACjD,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;SAClE,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CACF,CAAC;QACF,MAAM,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,SAAS,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAAC;QACvE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QACzD,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YAC/C,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACxC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;SACzF,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC5C,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACxC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;SAC5E,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACvE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,4EAA4E;AAC5E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,GAAG,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAChC,4EAA4E;QAC5E,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,0EAA0E;AAC1E,mDAAmD;AACnD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,GAAG,wBAAwB,CAAC;YACjC,oBAAoB,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;YAChD,WAAW,EAAE,CAAC,OAAO,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,CAAC,GAAG,wBAAwB,CAAC,EAAE,oBAAoB,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC;QAClG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,GAAG,wBAAwB,CAAC;YACjC,oBAAoB,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;YACtD,WAAW,EAAE,CAAC,gBAAgB,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QACjE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,GAAG,wBAAwB,CAAC,EAAE,oBAAoB,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACrG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,wBAAwB,CAAC,yCAAyC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACxF,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE,oBAAoB,EAAE,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACjF,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACxC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;SAC1E,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAUH,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IACjE,MAAM,SAAS,GAAwC;QACrD,CAAC,gBAAgB,EAAE,cAAc,CAAC,UAAgC,CAAC;QACnE,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CACtC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAgC,CAAC,CAClF;KACF,CAAC;IACF,sEAAsE;IACtE,+EAA+E;IAC/E,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAE7F,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,wCAAwC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO;QAClC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,gDAAgD,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC/E,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO;QACjE,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ChatApi } from "./core.js";
2
+ export declare class GoshtiHttpError extends Error {
3
+ readonly status: number;
4
+ constructor(status: number, what: string);
5
+ }
6
+ type FetchLike = typeof fetch;
7
+ export declare function createApi(baseUrl: string, token: string, fetchImpl?: FetchLike): ChatApi;
8
+ export {};
9
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/goshtiChannel/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,WAAW,CAAC;AAGnD,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM;CAIf;AAED,KAAK,SAAS,GAAG,OAAO,KAAK,CAAC;AAE9B,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAiB,GAAG,OAAO,CAoD/F"}
@@ -0,0 +1,63 @@
1
+ // The chat server's REST API, called as the person with their own token
2
+ // (add-goshti-claude-connector §2.1). Only what the channel needs: who am I,
3
+ // who is this, read a thread, post a reply.
4
+ export class GoshtiHttpError extends Error {
5
+ status;
6
+ constructor(status, what) {
7
+ super(`${what}: HTTP ${status}`);
8
+ this.status = status;
9
+ }
10
+ }
11
+ export function createApi(baseUrl, token, fetchImpl = fetch) {
12
+ const base = baseUrl.replace(/\/+$/, "");
13
+ const call = async (what, path, init = {}) => {
14
+ const resp = await fetchImpl(`${base}/api/v4${path}`, {
15
+ ...init,
16
+ headers: {
17
+ Authorization: `Bearer ${token}`,
18
+ "Content-Type": "application/json",
19
+ "X-Requested-With": "XMLHttpRequest",
20
+ ...(init.headers ?? {}),
21
+ },
22
+ signal: AbortSignal.timeout(15_000),
23
+ });
24
+ if (!resp.ok)
25
+ throw new GoshtiHttpError(resp.status, what);
26
+ return resp.json();
27
+ };
28
+ const asUser = (u) => {
29
+ const o = (u ?? {});
30
+ return {
31
+ id: typeof o.id === "string" ? o.id : "",
32
+ username: typeof o.username === "string" ? o.username : "",
33
+ is_bot: o.is_bot === true,
34
+ };
35
+ };
36
+ return {
37
+ me: async () => asUser(await call("reading your account", "/users/me")),
38
+ user: async (id) => asUser(await call("reading a user", `/users/${encodeURIComponent(id)}`)),
39
+ thread: async (rootId) => {
40
+ const body = (await call("reading the thread", `/posts/${encodeURIComponent(rootId)}/thread`));
41
+ const out = [];
42
+ for (const p of Object.values(body.posts ?? {})) {
43
+ // System messages and deleted posts are not context.
44
+ if (typeof p.type === "string" && p.type !== "")
45
+ continue;
46
+ if (typeof p.delete_at === "number" && p.delete_at > 0)
47
+ continue;
48
+ out.push({
49
+ id: String(p.id ?? ""),
50
+ userId: String(p.user_id ?? ""),
51
+ message: String(p.message ?? ""),
52
+ createAt: typeof p.create_at === "number" ? p.create_at : 0,
53
+ });
54
+ }
55
+ return out;
56
+ },
57
+ createPost: async (p) => {
58
+ const body = (await call("posting the reply", "/posts", { method: "POST", body: JSON.stringify(p) }));
59
+ return { id: String(body.id ?? "") };
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/goshtiChannel/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { Allowlist } from "./policy.js";
2
+ /**
3
+ * The default trigger word (task 2.2). There is no `claude` account on the
4
+ * server, so the server renders it as plain text and notifies nobody; a real
5
+ * mention would need a placeholder account (design open question 2), which
6
+ * this does not create.
7
+ */
8
+ export declare const DEFAULT_TRIGGER = "@claude";
9
+ export interface ChannelConfig {
10
+ url: string;
11
+ trigger: string;
12
+ allow: Allowlist;
13
+ rate: {
14
+ max: number;
15
+ periodSeconds: number;
16
+ };
17
+ context: {
18
+ posts: number;
19
+ chars: number;
20
+ };
21
+ }
22
+ export type LoadResult = {
23
+ ok: true;
24
+ config: ChannelConfig;
25
+ } | {
26
+ ok: false;
27
+ problem: string;
28
+ };
29
+ /** The configuration directory: `GOSHTI_CHANNEL_HOME`, else `~/.goshti-channel`. */
30
+ export declare function configDir(): string;
31
+ /** Normalise and check a server address; null when it is not one. */
32
+ export declare function normaliseUrl(raw: string): string | null;
33
+ export declare function loadConfig(dir?: string): LoadResult;
34
+ /**
35
+ * Write the address and trigger word, keeping everything else in the file (the
36
+ * allowlist above all — setup must never widen or reset it).
37
+ */
38
+ export declare function saveConfig(dir: string, update: {
39
+ url: string;
40
+ trigger?: string;
41
+ }): string;
42
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/goshtiChannel/config.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9F,oFAAoF;AACpF,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAaD,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASvD;AASD,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAoB,GAAG,UAAU,CA4ChE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAsBzF"}
@@ -0,0 +1,129 @@
1
+ // The Goshti channel's local configuration (add-goshti-claude-connector §2.3).
2
+ //
3
+ // One file per person, `~/.goshti-channel/config.json`, holding the server
4
+ // address, the trigger word, the allowlist and the bounds. Never the
5
+ // credential: that is in the OS store or `credentials.json` beside this file
6
+ // (credential.ts), and a config file that carries one is refused, so the
7
+ // address can be copied around or committed without taking the token with it.
8
+ import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
9
+ import { homedir } from "node:os";
10
+ import { join } from "node:path";
11
+ /**
12
+ * The default trigger word (task 2.2). There is no `claude` account on the
13
+ * server, so the server renders it as plain text and notifies nobody; a real
14
+ * mention would need a placeholder account (design open question 2), which
15
+ * this does not create.
16
+ */
17
+ export const DEFAULT_TRIGGER = "@claude";
18
+ /** The configuration directory: `GOSHTI_CHANNEL_HOME`, else `~/.goshti-channel`. */
19
+ export function configDir() {
20
+ return process.env.GOSHTI_CHANNEL_HOME || join(homedir(), ".goshti-channel");
21
+ }
22
+ const CREDENTIAL_KEYS = ["token", "access_token", "personal_access_token", "password", "secret"];
23
+ function clamp(v, lo, hi, dflt) {
24
+ if (typeof v !== "number" || !Number.isFinite(v))
25
+ return dflt;
26
+ return Math.min(hi, Math.max(lo, Math.floor(v)));
27
+ }
28
+ function strings(v) {
29
+ return Array.isArray(v) ? v.filter((s) => typeof s === "string" && s.trim() !== "").map((s) => s.trim()) : [];
30
+ }
31
+ /** Normalise and check a server address; null when it is not one. */
32
+ export function normaliseUrl(raw) {
33
+ let u;
34
+ try {
35
+ u = new URL(raw.trim());
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ if (u.protocol !== "https:" && u.protocol !== "http:")
41
+ return null;
42
+ return `${u.origin}${u.pathname.replace(/\/+$/, "")}`;
43
+ }
44
+ function readRaw(dir) {
45
+ const file = join(dir, "config.json");
46
+ if (!existsSync(file))
47
+ return null;
48
+ const parsed = JSON.parse(readFileSync(file, "utf8"));
49
+ return parsed && typeof parsed === "object" ? parsed : {};
50
+ }
51
+ export function loadConfig(dir = configDir()) {
52
+ let raw;
53
+ try {
54
+ raw = readRaw(dir);
55
+ }
56
+ catch (e) {
57
+ return { ok: false, problem: `${join(dir, "config.json")} is not valid JSON (${e.message}).` };
58
+ }
59
+ if (!raw) {
60
+ return {
61
+ ok: false,
62
+ problem: `No Goshti channel configuration at ${join(dir, "config.json")}. Run \`goshti-channel setup --url <your Goshti address>\`.`,
63
+ };
64
+ }
65
+ const leaked = CREDENTIAL_KEYS.filter((k) => k in raw);
66
+ if (leaked.length > 0) {
67
+ return {
68
+ ok: false,
69
+ problem: `${join(dir, "config.json")} contains a credential (${leaked.join(", ")}). Remove it and run \`goshti-channel setup\`, which keeps the token in the OS credential store.`,
70
+ };
71
+ }
72
+ const url = typeof raw.url === "string" ? normaliseUrl(raw.url) : null;
73
+ if (!url) {
74
+ return { ok: false, problem: `${join(dir, "config.json")} has no valid http(s) "url".` };
75
+ }
76
+ const trigger = typeof raw.trigger === "string" && raw.trigger.trim() ? raw.trigger.trim() : DEFAULT_TRIGGER;
77
+ const allow = (raw.allow ?? {});
78
+ const rate = (raw.rate ?? {});
79
+ const context = (raw.context ?? {});
80
+ return {
81
+ ok: true,
82
+ config: {
83
+ url,
84
+ trigger,
85
+ allow: { users: strings(allow.users), channels: strings(allow.channels) },
86
+ rate: {
87
+ max: clamp(rate.max, 1, 100, 10),
88
+ periodSeconds: clamp(rate.period_seconds, 1, 3600, 60),
89
+ },
90
+ context: {
91
+ posts: clamp(context.posts, 0, 50, 10),
92
+ chars: clamp(context.chars, 0, 20_000, 4000),
93
+ },
94
+ },
95
+ };
96
+ }
97
+ /**
98
+ * Write the address and trigger word, keeping everything else in the file (the
99
+ * allowlist above all — setup must never widen or reset it).
100
+ */
101
+ export function saveConfig(dir, update) {
102
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
103
+ let existing = {};
104
+ try {
105
+ existing = readRaw(dir) ?? {};
106
+ }
107
+ catch {
108
+ existing = {};
109
+ }
110
+ for (const k of CREDENTIAL_KEYS)
111
+ delete existing[k];
112
+ const next = { ...existing, url: update.url };
113
+ if (update.trigger)
114
+ next.trigger = update.trigger;
115
+ if (!next.allow)
116
+ next.allow = { users: [], channels: [] };
117
+ const file = join(dir, "config.json");
118
+ const tmp = `${file}.tmp`;
119
+ writeFileSync(tmp, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
120
+ renameSync(tmp, file);
121
+ try {
122
+ chmodSync(file, 0o600);
123
+ }
124
+ catch {
125
+ // Windows: the profile directory's ACL is what protects it.
126
+ }
127
+ return file;
128
+ }
129
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/goshtiChannel/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/goshtiChannel/config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ import { mkdtempSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { describe, expect, it } from "vitest";
5
+ import { DEFAULT_TRIGGER, loadConfig, saveConfig } from "./config.js";
6
+ function dir() {
7
+ return mkdtempSync(join(tmpdir(), "goshti-cfg-"));
8
+ }
9
+ describe("channel config", () => {
10
+ it("reports a missing file as not set up, naming the setup command", () => {
11
+ const r = loadConfig(dir());
12
+ expect(r.ok).toBe(false);
13
+ if (!r.ok)
14
+ expect(r.problem).toMatch(/goshti-channel setup/);
15
+ });
16
+ it("fills defaults: the trigger word, an empty allowlist, the bounds", () => {
17
+ const d = dir();
18
+ writeFileSync(join(d, "config.json"), JSON.stringify({ url: "https://chat.example.com/" }));
19
+ const r = loadConfig(d);
20
+ expect(r.ok).toBe(true);
21
+ if (!r.ok)
22
+ return;
23
+ expect(r.config.url).toBe("https://chat.example.com");
24
+ expect(r.config.trigger).toBe(DEFAULT_TRIGGER);
25
+ expect(r.config.allow).toEqual({ users: [], channels: [] });
26
+ expect(r.config.rate).toEqual({ max: 10, periodSeconds: 60 });
27
+ expect(r.config.context).toEqual({ posts: 10, chars: 4000 });
28
+ });
29
+ it("refuses a config file that holds a credential", () => {
30
+ const d = dir();
31
+ writeFileSync(join(d, "config.json"), JSON.stringify({ url: "https://c.example", token: "abc" }));
32
+ const r = loadConfig(d);
33
+ expect(r.ok).toBe(false);
34
+ if (!r.ok)
35
+ expect(r.problem).toMatch(/credential/i);
36
+ });
37
+ it("refuses a URL that is not http(s)", () => {
38
+ const d = dir();
39
+ writeFileSync(join(d, "config.json"), JSON.stringify({ url: "file:///etc/passwd" }));
40
+ expect(loadConfig(d).ok).toBe(false);
41
+ });
42
+ it("keeps the allowlist to strings and the bounds within limits", () => {
43
+ const d = dir();
44
+ writeFileSync(join(d, "config.json"), JSON.stringify({
45
+ url: "https://c.example",
46
+ allow: { users: ["u1", 7, ""], channels: ["c1"] },
47
+ rate: { max: 100000, period_seconds: 0 },
48
+ context: { posts: -3, chars: 10_000_000 },
49
+ }));
50
+ const r = loadConfig(d);
51
+ expect(r.ok).toBe(true);
52
+ if (!r.ok)
53
+ return;
54
+ expect(r.config.allow).toEqual({ users: ["u1"], channels: ["c1"] });
55
+ expect(r.config.rate.max).toBeLessThanOrEqual(100);
56
+ expect(r.config.rate.periodSeconds).toBeGreaterThanOrEqual(1);
57
+ expect(r.config.context.posts).toBeGreaterThanOrEqual(0);
58
+ expect(r.config.context.chars).toBeLessThanOrEqual(20_000);
59
+ });
60
+ it("saves without a credential and keeps what it does not manage", () => {
61
+ const d = dir();
62
+ writeFileSync(join(d, "config.json"), JSON.stringify({ url: "https://old.example", allow: { users: ["u1"], channels: [] } }));
63
+ saveConfig(d, { url: "https://new.example", trigger: "@helper" });
64
+ const saved = JSON.parse(readFileSync(join(d, "config.json"), "utf8"));
65
+ expect(saved.url).toBe("https://new.example");
66
+ expect(saved.trigger).toBe("@helper");
67
+ expect(saved.allow.users).toEqual(["u1"]);
68
+ if (process.platform !== "win32") {
69
+ expect(statSync(join(d, "config.json")).mode & 0o077).toBe(0);
70
+ }
71
+ });
72
+ });
73
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/goshtiChannel/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtE,SAAS,GAAG;IACV,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO;QAClB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClG,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,aAAa,CACX,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EACtB,IAAI,CAAC,SAAS,CAAC;YACb,GAAG,EAAE,mBAAmB;YACxB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;YACjD,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE;YACxC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;SAC1C,CAAC,CACH,CAAC;QACF,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO;QAClB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9H,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { ChannelConfig } from "./config.js";
2
+ import { type ContextPost, type Me } from "./policy.js";
3
+ export interface ChatUser {
4
+ id: string;
5
+ username: string;
6
+ is_bot: boolean;
7
+ }
8
+ /** The slice of the chat server's REST API the channel uses, as the person. */
9
+ export interface ChatApi {
10
+ me(): Promise<ChatUser>;
11
+ user(id: string): Promise<ChatUser>;
12
+ thread(rootId: string): Promise<ContextPost[]>;
13
+ createPost(p: {
14
+ channel_id: string;
15
+ root_id: string;
16
+ message: string;
17
+ props: Record<string, string>;
18
+ }): Promise<{
19
+ id: string;
20
+ }>;
21
+ }
22
+ export type Notify = (content: string, meta: Record<string, string>) => Promise<void>;
23
+ export type OfflineReason = "token_refused" | "not_configured" | "no_credential" | "bot_account" | "gave_up";
24
+ export interface CoreDeps {
25
+ api: ChatApi;
26
+ config: ChannelConfig;
27
+ me: Me;
28
+ notify: Notify;
29
+ now?: () => number;
30
+ schedule?: (ms: number, fn: () => void) => void;
31
+ }
32
+ export declare class ChannelCore {
33
+ private readonly deps;
34
+ private readonly guard;
35
+ private readonly gate;
36
+ private readonly users;
37
+ private readonly now;
38
+ private readonly schedule;
39
+ private summaryScheduled;
40
+ private dropped;
41
+ constructor(deps: CoreDeps);
42
+ /** The sender's account, or undefined when it cannot be read. Cached. */
43
+ private lookup;
44
+ /** A `posted` WebSocket event. Never throws: one bad post must not end the stream. */
45
+ onPosted(data: Record<string, unknown>): Promise<void>;
46
+ private where;
47
+ private compose;
48
+ private scheduleSummary;
49
+ /** `goshti_reply`. Refuses anything but a thread delivered this session. */
50
+ reply(postId: string, text: string): Promise<{
51
+ ok: boolean;
52
+ text: string;
53
+ }>;
54
+ reportOffline(reason: OfflineReason, detail?: string): Promise<void>;
55
+ /** A dropped connection: the first drop and giving up are told, not every retry. */
56
+ reportDrop(f: {
57
+ attempt: number;
58
+ givingUp: boolean;
59
+ detail: string;
60
+ }): Promise<void>;
61
+ reportOnline(): Promise<void>;
62
+ }
63
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/goshtiChannel/core.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,EAAE,EAER,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,UAAU,CAAC,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7B;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa,GAAG,SAAS,CAAC;AAE7G,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,EAAE,EAAE,EAAE,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,qBAAa,WAAW;IASV,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;gBAEK,IAAI,EAAE,QAAQ;IAO3C,yEAAyE;YAC3D,MAAM;IAYpB,sFAAsF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC5D,OAAO,CAAC,KAAK;YAWC,OAAO;IA6DrB,OAAO,CAAC,eAAe;IAsBvB,4EAA4E;IACtE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA8B3E,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,oFAAoF;IAC9E,UAAU,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAOpC"}