@poolzin/pool-bot 2026.4.44 → 2026.4.46

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 (46) hide show
  1. package/dist/agents/model-catalog-gemma4.d.ts +6 -0
  2. package/dist/agents/model-catalog-gemma4.d.ts.map +1 -0
  3. package/dist/agents/model-catalog-gemma4.js +17 -0
  4. package/dist/agents/model-catalog.d.ts.map +1 -1
  5. package/dist/agents/model-catalog.js +7 -0
  6. package/dist/agents/tools/music-edit-tool.d.ts +9 -0
  7. package/dist/agents/tools/music-edit-tool.d.ts.map +1 -0
  8. package/dist/agents/tools/music-edit-tool.js +46 -0
  9. package/dist/agents/tools/video-edit-tool.d.ts +9 -0
  10. package/dist/agents/tools/video-edit-tool.d.ts.map +1 -0
  11. package/dist/agents/tools/video-edit-tool.js +46 -0
  12. package/dist/build-info.json +3 -3
  13. package/dist/cli/completion.d.ts +15 -0
  14. package/dist/cli/completion.d.ts.map +1 -0
  15. package/dist/cli/completion.js +183 -0
  16. package/dist/cli/onboard-cli.d.ts.map +1 -1
  17. package/dist/cli/onboard-cli.js +4 -1
  18. package/dist/cli/program/register.subclis.js +5 -5
  19. package/dist/cli/sessions-checkpoints-cli.d.ts +6 -0
  20. package/dist/cli/sessions-checkpoints-cli.d.ts.map +1 -0
  21. package/dist/cli/sessions-checkpoints-cli.js +117 -0
  22. package/dist/cli/webhooks-cli.d.ts +13 -0
  23. package/dist/cli/webhooks-cli.d.ts.map +1 -1
  24. package/dist/cli/webhooks-cli.js +323 -130
  25. package/dist/errors/user-friendly-errors.d.ts +23 -0
  26. package/dist/errors/user-friendly-errors.d.ts.map +1 -0
  27. package/dist/errors/user-friendly-errors.js +182 -0
  28. package/dist/infra/net/fetch-guard.d.ts.map +1 -1
  29. package/dist/memory/wiki/store.d.ts +53 -0
  30. package/dist/memory/wiki/store.d.ts.map +1 -0
  31. package/dist/memory/wiki/store.js +222 -0
  32. package/dist/memory/wiki/types.d.ts +57 -0
  33. package/dist/memory/wiki/types.d.ts.map +1 -0
  34. package/dist/memory/wiki/types.js +6 -0
  35. package/dist/plugins/webhook-ingress.d.ts +104 -0
  36. package/dist/plugins/webhook-ingress.d.ts.map +1 -0
  37. package/dist/plugins/webhook-ingress.js +287 -0
  38. package/dist/providers/ollama-vision.d.ts +30 -0
  39. package/dist/providers/ollama-vision.d.ts.map +1 -0
  40. package/dist/providers/ollama-vision.js +62 -0
  41. package/dist/sessions/checkpoints.d.ts +76 -0
  42. package/dist/sessions/checkpoints.d.ts.map +1 -0
  43. package/dist/sessions/checkpoints.js +162 -0
  44. package/dist/slack/channel.d.ts.map +1 -1
  45. package/dist/slack/channel.js +13 -2
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-guard.d.ts","sourceRoot":"","sources":["../../../src/infra/net/fetch-guard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGtD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qCAAqC;IACrC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,CAAC;gBAGhF,IAAI,EAAE,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,EACxE,OAAO,EAAE,MAAM;CAMlB;AAwCD,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA0DF;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CA0EnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,IACxD,KAAK,MAAM,GAAG,GAAG,EAAE,OAAO,WAAW,uBAC9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO7F;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAiF7B;AAGD,eAAO,MAAM,YAAY,WACf,WAAW,GAAG,GAAG,SAAS,WAAW;qBAK1B,GAAG;uBACK,MAAM,GAAG,GAAG;CAExC,CAAC"}
1
+ {"version":3,"file":"fetch-guard.d.ts","sourceRoot":"","sources":["../../../src/infra/net/fetch-guard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGtD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qCAAqC;IACrC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,CAAC;gBAGhF,IAAI,EAAE,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,EACxE,OAAO,EAAE,MAAM;CAMlB;AAyCD,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA0DF;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE,WAAW,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CA0EnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,IACxD,KAAK,MAAM,GAAG,GAAG,EAAE,OAAO,WAAW,uBAC9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO7F;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAiF7B;AAGD,eAAO,MAAM,YAAY,WACf,WAAW,GAAG,GAAG,SAAS,WAAW;qBAK1B,GAAG;uBACK,MAAM,GAAG,GAAG;CAExC,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Memory-Wiki Store
3
+ *
4
+ * Persistent storage for wiki-backed memory.
5
+ */
6
+ import type { WikiClaim, WikiClaimId } from "./types.js";
7
+ /**
8
+ * Add a claim to a wiki page.
9
+ */
10
+ export declare function addWikiClaim(workspaceDir: string, pagePath: string, params: {
11
+ statement: string;
12
+ evidence: string[];
13
+ source: WikiClaim["source"];
14
+ tags?: string[];
15
+ confidence?: number;
16
+ }): WikiClaim;
17
+ /**
18
+ * Get a claim by ID.
19
+ */
20
+ export declare function getWikiClaim(workspaceDir: string, claimId: string): WikiClaim | null;
21
+ /**
22
+ * List claims in a page.
23
+ */
24
+ export declare function listWikiClaims(workspaceDir: string, pagePath: string): WikiClaim[];
25
+ /**
26
+ * Search wiki for claims.
27
+ */
28
+ export declare function searchWikiClaims(workspaceDir: string, options?: {
29
+ query?: string;
30
+ tags?: string[];
31
+ limit?: number;
32
+ }): Array<{
33
+ claim: WikiClaim;
34
+ pagePath: string;
35
+ }>;
36
+ /**
37
+ * Detect contradictions between claims.
38
+ */
39
+ export declare function detectContradictions(workspaceDir: string): Array<[WikiClaimId, WikiClaimId]>;
40
+ /**
41
+ * Compile page digest for quick reference.
42
+ */
43
+ export declare function compileWikiDigest(workspaceDir: string, pagePath: string): string;
44
+ /**
45
+ * Get wiki statistics.
46
+ */
47
+ export declare function getWikiStats(workspaceDir: string): {
48
+ totalPages: number;
49
+ totalClaims: number;
50
+ claimsBySource: Record<string, number>;
51
+ averageConfidence: number;
52
+ };
53
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/memory/wiki/store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAuB,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAkC9E;;GAEG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,SAAS,CAoCX;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAOpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAIlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE,KAAK,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAmC5F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6ChF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAsBA"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Memory-Wiki Store
3
+ *
4
+ * Persistent storage for wiki-backed memory.
5
+ */
6
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
7
+ import { join, dirname } from "node:path";
8
+ const WIKI_STORE_VERSION = 1;
9
+ function getWikiStorePath(workspaceDir) {
10
+ return join(workspaceDir, "memory", "wiki.json");
11
+ }
12
+ function loadWikiStore(workspaceDir) {
13
+ const path = getWikiStorePath(workspaceDir);
14
+ if (!existsSync(path)) {
15
+ return { version: WIKI_STORE_VERSION, pages: {}, byClaim: {} };
16
+ }
17
+ try {
18
+ const content = readFileSync(path, "utf-8");
19
+ return JSON.parse(content);
20
+ }
21
+ catch {
22
+ return { version: WIKI_STORE_VERSION, pages: {}, byClaim: {} };
23
+ }
24
+ }
25
+ function saveWikiStore(workspaceDir, store) {
26
+ const path = getWikiStorePath(workspaceDir);
27
+ const dir = dirname(path);
28
+ if (!existsSync(dir)) {
29
+ mkdirSync(dir, { recursive: true });
30
+ }
31
+ writeFileSync(path, JSON.stringify(store, null, 2) + "\n", { mode: 0o600 });
32
+ }
33
+ function generateClaimId() {
34
+ return `claim_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
35
+ }
36
+ /**
37
+ * Add a claim to a wiki page.
38
+ */
39
+ export function addWikiClaim(workspaceDir, pagePath, params) {
40
+ const store = loadWikiStore(workspaceDir);
41
+ // Get or create page
42
+ let page = store.pages[pagePath];
43
+ if (!page) {
44
+ page = {
45
+ path: pagePath,
46
+ title: pagePath.split("/").pop() ?? pagePath,
47
+ claims: [],
48
+ };
49
+ store.pages[pagePath] = page;
50
+ }
51
+ // Create claim
52
+ const claim = {
53
+ id: generateClaimId(),
54
+ statement: params.statement,
55
+ evidence: params.evidence,
56
+ confidence: params.confidence ?? 0.8,
57
+ source: params.source,
58
+ createdAt: Date.now(),
59
+ updatedAt: Date.now(),
60
+ tags: params.tags,
61
+ };
62
+ // Add to page
63
+ page.claims.push(claim);
64
+ page.lastCompiledAt = undefined; // Invalidate digest
65
+ // Index by claim ID
66
+ store.byClaim[claim.id] = pagePath;
67
+ saveWikiStore(workspaceDir, store);
68
+ return claim;
69
+ }
70
+ /**
71
+ * Get a claim by ID.
72
+ */
73
+ export function getWikiClaim(workspaceDir, claimId) {
74
+ const store = loadWikiStore(workspaceDir);
75
+ const pagePath = store.byClaim[claimId];
76
+ if (!pagePath)
77
+ return null;
78
+ const page = store.pages[pagePath];
79
+ return page?.claims.find((c) => c.id === claimId) ?? null;
80
+ }
81
+ /**
82
+ * List claims in a page.
83
+ */
84
+ export function listWikiClaims(workspaceDir, pagePath) {
85
+ const store = loadWikiStore(workspaceDir);
86
+ const page = store.pages[pagePath];
87
+ return page?.claims ?? [];
88
+ }
89
+ /**
90
+ * Search wiki for claims.
91
+ */
92
+ export function searchWikiClaims(workspaceDir, options = {}) {
93
+ const store = loadWikiStore(workspaceDir);
94
+ const results = [];
95
+ const queryLower = options.query?.toLowerCase() ?? "";
96
+ for (const [pagePath, page] of Object.entries(store.pages)) {
97
+ for (const claim of page.claims) {
98
+ let matches = true;
99
+ // Filter by query
100
+ if (queryLower) {
101
+ const statementLower = claim.statement.toLowerCase();
102
+ const evidenceMatch = claim.evidence.some((e) => e.toLowerCase().includes(queryLower));
103
+ if (!statementLower.includes(queryLower) && !evidenceMatch) {
104
+ matches = false;
105
+ }
106
+ }
107
+ // Filter by tags
108
+ if (options.tags?.length && claim.tags) {
109
+ const hasTag = options.tags.some((t) => claim.tags?.includes(t));
110
+ if (!hasTag) {
111
+ matches = false;
112
+ }
113
+ }
114
+ if (matches) {
115
+ results.push({ claim, pagePath });
116
+ }
117
+ // Limit results
118
+ if (options.limit && results.length >= options.limit) {
119
+ return results;
120
+ }
121
+ }
122
+ }
123
+ return results;
124
+ }
125
+ /**
126
+ * Detect contradictions between claims.
127
+ */
128
+ export function detectContradictions(workspaceDir) {
129
+ const store = loadWikiStore(workspaceDir);
130
+ const contradictions = [];
131
+ // Simple contradiction detection based on keywords
132
+ const contradictionKeywords = [
133
+ ["always", "never"],
134
+ ["all", "none"],
135
+ ["must", "must not"],
136
+ ["should", "should not"],
137
+ ["can", "cannot"],
138
+ ];
139
+ const allClaims = [];
140
+ for (const [pagePath, page] of Object.entries(store.pages)) {
141
+ for (const claim of page.claims) {
142
+ allClaims.push({ claim, pagePath });
143
+ }
144
+ }
145
+ for (let i = 0; i < allClaims.length; i++) {
146
+ for (let j = i + 1; j < allClaims.length; j++) {
147
+ const a = allClaims[i].claim.statement.toLowerCase();
148
+ const b = allClaims[j].claim.statement.toLowerCase();
149
+ for (const [pos, neg] of contradictionKeywords) {
150
+ if ((a.includes(pos) && b.includes(neg)) || (a.includes(neg) && b.includes(pos))) {
151
+ contradictions.push([allClaims[i].claim.id, allClaims[j].claim.id]);
152
+ break;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ return contradictions;
158
+ }
159
+ /**
160
+ * Compile page digest for quick reference.
161
+ */
162
+ export function compileWikiDigest(workspaceDir, pagePath) {
163
+ const store = loadWikiStore(workspaceDir);
164
+ const page = store.pages[pagePath];
165
+ if (!page)
166
+ return "";
167
+ const lines = [];
168
+ lines.push(`# ${page.title}`);
169
+ lines.push("");
170
+ // Group claims by confidence
171
+ const highConfidence = page.claims.filter((c) => c.confidence >= 0.8);
172
+ const mediumConfidence = page.claims.filter((c) => c.confidence >= 0.5 && c.confidence < 0.8);
173
+ const lowConfidence = page.claims.filter((c) => c.confidence < 0.5);
174
+ if (highConfidence.length > 0) {
175
+ lines.push("## High Confidence");
176
+ for (const claim of highConfidence) {
177
+ lines.push(`- ${claim.statement}`);
178
+ }
179
+ lines.push("");
180
+ }
181
+ if (mediumConfidence.length > 0) {
182
+ lines.push("## Medium Confidence");
183
+ for (const claim of mediumConfidence) {
184
+ lines.push(`- ${claim.statement}`);
185
+ }
186
+ lines.push("");
187
+ }
188
+ if (lowConfidence.length > 0) {
189
+ lines.push("## Low Confidence (Verify)");
190
+ for (const claim of lowConfidence) {
191
+ lines.push(`- ${claim.statement}`);
192
+ }
193
+ lines.push("");
194
+ }
195
+ const digest = lines.join("\n");
196
+ page.compiledDigest = digest;
197
+ page.lastCompiledAt = Date.now();
198
+ saveWikiStore(workspaceDir, store);
199
+ return digest;
200
+ }
201
+ /**
202
+ * Get wiki statistics.
203
+ */
204
+ export function getWikiStats(workspaceDir) {
205
+ const store = loadWikiStore(workspaceDir);
206
+ const allClaims = [];
207
+ for (const page of Object.values(store.pages)) {
208
+ allClaims.push(...page.claims);
209
+ }
210
+ const claimsBySource = {};
211
+ let totalConfidence = 0;
212
+ for (const claim of allClaims) {
213
+ claimsBySource[claim.source] = (claimsBySource[claim.source] ?? 0) + 1;
214
+ totalConfidence += claim.confidence;
215
+ }
216
+ return {
217
+ totalPages: Object.keys(store.pages).length,
218
+ totalClaims: allClaims.length,
219
+ claimsBySource,
220
+ averageConfidence: allClaims.length > 0 ? totalConfidence / allClaims.length : 0,
221
+ };
222
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Memory-Wiki Types
3
+ *
4
+ * Wiki-backed memory with claims, evidence, and contradiction detection.
5
+ */
6
+ export type WikiClaimId = string;
7
+ export type WikiClaim = {
8
+ id: WikiClaimId;
9
+ /** The claim statement */
10
+ statement: string;
11
+ /** Evidence supporting this claim (session keys, URLs, etc.) */
12
+ evidence: string[];
13
+ /** Confidence score (0-1) */
14
+ confidence: number;
15
+ /** Source of the claim */
16
+ source: "user-stated" | "agent-inferred" | "external";
17
+ /** Timestamps */
18
+ createdAt: number;
19
+ updatedAt: number;
20
+ /** Related claims that contradict this one */
21
+ contradictions?: WikiClaimId[];
22
+ /** Tags for categorization */
23
+ tags?: string[];
24
+ /** Metadata */
25
+ metadata?: Record<string, unknown>;
26
+ };
27
+ export type WikiPage = {
28
+ path: string;
29
+ title: string;
30
+ claims: WikiClaim[];
31
+ /** Compiled digest for quick reference */
32
+ compiledDigest?: string;
33
+ /** Last compilation timestamp */
34
+ lastCompiledAt?: number;
35
+ /** Freshness weight (recent claims weighted higher) */
36
+ freshnessWeight?: number;
37
+ };
38
+ export type WikiStore = {
39
+ version: number;
40
+ pages: Record<string, WikiPage>;
41
+ /** Index by claim ID for quick lookup */
42
+ byClaim: Record<WikiClaimId, string>;
43
+ };
44
+ export type WikiSearchResult = {
45
+ claim: WikiClaim;
46
+ pagePath: string;
47
+ score: number;
48
+ matchedTerms: string[];
49
+ };
50
+ export type WikiSearchOptions = {
51
+ query?: string;
52
+ tags?: string[];
53
+ minConfidence?: number;
54
+ limit?: number;
55
+ includeContradictions?: boolean;
56
+ };
57
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/memory/wiki/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,MAAM,EAAE,aAAa,GAAG,gBAAgB,GAAG,UAAU,CAAC;IACtD,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC;IAC/B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Memory-Wiki Types
3
+ *
4
+ * Wiki-backed memory with claims, evidence, and contradiction detection.
5
+ */
6
+ export {};
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Webhook Ingress Plugin - TaskFlows via Webhook
3
+ *
4
+ * Allows external automation to trigger agent runs via HTTP webhooks.
5
+ * Each webhook route has:
6
+ * - Unique path
7
+ * - Shared secret for authentication
8
+ * - TaskFlow configuration (what agent/skill to run)
9
+ *
10
+ * Inspired by OpenClaw's webhook ingress plugin.
11
+ */
12
+ import { createServer } from "node:http";
13
+ export type WebhookRouteId = string;
14
+ export type WebhookRoute = {
15
+ id: WebhookRouteId;
16
+ /** URL path (e.g., "/github-ci", "/deploy") */
17
+ path: string;
18
+ /** SHA-256 hash of shared secret */
19
+ secretHash: string;
20
+ /** TaskFlow to execute when webhook is triggered */
21
+ taskFlow: {
22
+ agentId: string;
23
+ message: string;
24
+ sessionKey?: string;
25
+ skills?: string[];
26
+ };
27
+ /** HTTP methods allowed */
28
+ methods: string[];
29
+ /** Rate limit (requests per minute) */
30
+ rateLimitPerMin?: number;
31
+ /** Created at timestamp */
32
+ createdAt: number;
33
+ /** Last triggered at */
34
+ lastTriggeredAt?: number;
35
+ /** Trigger count */
36
+ triggerCount: number;
37
+ /** Enabled/disabled */
38
+ enabled: boolean;
39
+ };
40
+ export type WebhookStore = {
41
+ version: number;
42
+ routes: Record<WebhookRouteId, WebhookRoute>;
43
+ /** Index by path for quick lookup */
44
+ byPath: Record<string, WebhookRouteId>;
45
+ };
46
+ /**
47
+ * Create a new webhook route.
48
+ */
49
+ export declare function createWebhookRoute(workspaceDir: string, params: {
50
+ path: string;
51
+ secret: string;
52
+ taskFlow: WebhookRoute["taskFlow"];
53
+ methods?: string[];
54
+ rateLimitPerMin?: number;
55
+ }): WebhookRouteId;
56
+ /**
57
+ * Get a webhook route by ID.
58
+ */
59
+ export declare function getWebhookRoute(workspaceDir: string, routeId: string): WebhookRoute | null;
60
+ /**
61
+ * Get a webhook route by path.
62
+ */
63
+ export declare function getWebhookRouteByPath(workspaceDir: string, path: string): WebhookRoute | null;
64
+ /**
65
+ * List all webhook routes.
66
+ */
67
+ export declare function listWebhookRoutes(workspaceDir: string): WebhookRoute[];
68
+ /**
69
+ * Delete a webhook route.
70
+ */
71
+ export declare function deleteWebhookRoute(workspaceDir: string, routeId: string): boolean;
72
+ /**
73
+ * Update webhook route (enable/disable).
74
+ */
75
+ export declare function updateWebhookRoute(workspaceDir: string, routeId: string, updates: Partial<Pick<WebhookRoute, "enabled">>): WebhookRoute | null;
76
+ /**
77
+ * Verify webhook signature and payload.
78
+ */
79
+ export declare function verifyWebhookRequest(route: WebhookRoute, payload: string, signature: string, secret: string): boolean;
80
+ /**
81
+ * Record webhook trigger.
82
+ */
83
+ export declare function recordWebhookTrigger(workspaceDir: string, routeId: string): void;
84
+ /**
85
+ * Get webhook statistics.
86
+ */
87
+ export declare function getWebhookStats(workspaceDir: string): {
88
+ total: number;
89
+ enabled: number;
90
+ totalTriggers: number;
91
+ routes: Array<{
92
+ id: string;
93
+ path: string;
94
+ triggers: number;
95
+ }>;
96
+ };
97
+ /**
98
+ * Start webhook HTTP server.
99
+ */
100
+ export declare function startWebhookServer(workspaceDir: string, port?: number, onTrigger?: (route: WebhookRoute, payload: unknown) => Promise<void>): Promise<{
101
+ server: ReturnType<typeof createServer>;
102
+ port: number;
103
+ }>;
104
+ //# sourceMappingURL=webhook-ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-ingress.d.ts","sourceRoot":"","sources":["../../src/plugins/webhook-ingress.ts"],"names":[],"mappings":"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"}