@grackle-ai/database 0.115.2 → 0.117.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.
@@ -1 +1 @@
1
- {"version":3,"file":"db-seed.d.ts","sourceRoot":"","sources":["../src/db-seed.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,IAAI,CAgNtE"}
1
+ {"version":3,"file":"db-seed.d.ts","sourceRoot":"","sources":["../src/db-seed.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,IAAI,CA8MtE"}
package/dist/db-seed.js CHANGED
@@ -56,7 +56,6 @@ After creating the PR, you must ensure it is ready to merge.
56
56
  11. **Check for merge conflicts**: Verify the PR has no merge conflicts. If it does, fetch and merge the main branch, resolve conflicts, rebuild, commit, and push.
57
57
  12. **Wait for CI**: Wait for all CI checks to complete. If any check fails, read the logs, fix the issue, commit, push, and repeat.
58
58
  13. **Address code review comments**: Check for automated code review comments. For each unresolved comment: read the suggestion, fix the code or dismiss with an explanation, reply to the comment, and resolve the thread. After fixing, commit, push, and check again. Repeat until all review threads are resolved.
59
- 14. **Post finding**: Use finding_post to summarize what you did and any key decisions.
60
59
 
61
60
  IMPORTANT: The PR is the deliverable, but a PR with failing CI or unresolved review comments is NOT done. You MUST complete Phase 3. Do NOT go to "waiting for input" until CI is green AND all review threads are resolved.'
62
61
  WHERE id = 'claude-code' AND system_prompt = '' AND name = 'Claude Code'
@@ -116,7 +115,6 @@ IMPORTANT: The PR is the deliverable, but a PR with failing CI or unresolved rev
116
115
  "- Help plan and break down work into tasks",
117
116
  "- Create and manage workspaces (project containers tied to environments)",
118
117
  "- Create, assign, and monitor tasks executed by AI coding agents",
119
- "- Share and query findings (knowledge shared between agents)",
120
118
  "",
121
119
  "When the user describes work to be done:",
122
120
  "1. Help them think through the approach",
@@ -1 +1 @@
1
- {"version":3,"file":"db-seed.js","sourceRoot":"","sources":["../src/db-seed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-seed.js","sourceRoot":"","sources":["../src/db-seed.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type DomainEventRow } from "./schema.js";
1
2
  /** A domain event to be persisted. */
2
3
  export interface DomainEvent {
3
4
  /** ULID — chronologically sortable unique identifier. */
@@ -9,6 +10,19 @@ export interface DomainEvent {
9
10
  /** Domain-specific payload. */
10
11
  payload: Record<string, unknown>;
11
12
  }
13
+ /** Filters for {@link queryDomainEvents}. All optional; combined with AND. */
14
+ export interface DomainEventQuery {
15
+ /** Return only events whose ULID `id` sorts before this value (exclusive) — page into older history. */
16
+ beforeId?: string;
17
+ /** Return only events of this exact type (e.g. "task.created"). */
18
+ type?: string;
19
+ /** Return only events with `timestamp >=` this ISO 8601 value (inclusive). */
20
+ since?: string;
21
+ /** Return only events with `timestamp <=` this ISO 8601 value (inclusive). */
22
+ until?: string;
23
+ /** Max rows to return (default {@link DEFAULT_DOMAIN_EVENT_LIMIT}, capped at {@link MAX_DOMAIN_EVENT_LIMIT}). */
24
+ limit?: number;
25
+ }
12
26
  /**
13
27
  * Persist a domain event to the `domain_events` SQLite table.
14
28
  * Called synchronously by `emit()` — SQLite in WAL mode handles this efficiently.
@@ -16,4 +30,14 @@ export interface DomainEvent {
16
30
  * @param event - The fully-formed domain event to persist.
17
31
  */
18
32
  export declare function persistEvent(event: DomainEvent): void;
33
+ /**
34
+ * Query persisted domain events, **most recent first** (ordered by `id`
35
+ * descending — ids are ULIDs, so id order is chronological). Filters compose
36
+ * with AND; `beforeId` pages into older history. This is the read side of the
37
+ * `domain_events` event store (RFC #1264 Phase 1) — see {@link persistEvent} for the write side.
38
+ *
39
+ * @param query - Optional `beforeId` cursor / type / time filters and limit.
40
+ * @returns Matching rows, newest first.
41
+ */
42
+ export declare function queryDomainEvents(query?: DomainEventQuery): DomainEventRow[];
19
43
  //# sourceMappingURL=event-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAEA,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAOrD"}
1
+ {"version":3,"file":"event-store.d.ts","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,sCAAsC;AACtC,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAOD,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,wGAAwG;IACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iHAAiH;IACjH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAOrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,gBAAqB,GAAG,cAAc,EAAE,CAuBhF"}
@@ -1,4 +1,10 @@
1
+ import { and, desc, eq, gte, lt, lte } from "drizzle-orm";
1
2
  import db from "./db.js";
3
+ import { domainEvents } from "./schema.js";
4
+ /** Default number of rows returned by {@link queryDomainEvents} when no limit is given. */
5
+ const DEFAULT_DOMAIN_EVENT_LIMIT = 100;
6
+ /** Hard cap on rows returned by {@link queryDomainEvents}. */
7
+ const MAX_DOMAIN_EVENT_LIMIT = 1000;
2
8
  /** Prepared statement for inserting domain events (lazy-initialized). */
3
9
  let insertStmt;
4
10
  /**
@@ -13,4 +19,32 @@ export function persistEvent(event) {
13
19
  }
14
20
  insertStmt.run([event.id, event.type, event.timestamp, JSON.stringify(event.payload)]);
15
21
  }
22
+ /**
23
+ * Query persisted domain events, **most recent first** (ordered by `id`
24
+ * descending — ids are ULIDs, so id order is chronological). Filters compose
25
+ * with AND; `beforeId` pages into older history. This is the read side of the
26
+ * `domain_events` event store (RFC #1264 Phase 1) — see {@link persistEvent} for the write side.
27
+ *
28
+ * @param query - Optional `beforeId` cursor / type / time filters and limit.
29
+ * @returns Matching rows, newest first.
30
+ */
31
+ export function queryDomainEvents(query = {}) {
32
+ const conditions = [];
33
+ if (query.beforeId) {
34
+ conditions.push(lt(domainEvents.id, query.beforeId));
35
+ }
36
+ if (query.type) {
37
+ conditions.push(eq(domainEvents.type, query.type));
38
+ }
39
+ if (query.since) {
40
+ conditions.push(gte(domainEvents.timestamp, query.since));
41
+ }
42
+ if (query.until) {
43
+ conditions.push(lte(domainEvents.timestamp, query.until));
44
+ }
45
+ const limit = Math.min(query.limit && query.limit > 0 ? query.limit : DEFAULT_DOMAIN_EVENT_LIMIT, MAX_DOMAIN_EVENT_LIMIT);
46
+ const base = db.select().from(domainEvents);
47
+ const filtered = conditions.length > 0 ? base.where(and(...conditions)) : base;
48
+ return filtered.orderBy(desc(domainEvents.id)).limit(limit).all();
49
+ }
16
50
  //# sourceMappingURL=event-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAczB,yEAAyE;AACzE,IAAI,UAA6D,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAC7B,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"event-store.js","sourceRoot":"","sources":["../src/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;AAchE,2FAA2F;AAC3F,MAAM,0BAA0B,GAAW,GAAG,CAAC;AAC/C,8DAA8D;AAC9D,MAAM,sBAAsB,GAAW,IAAI,CAAC;AAgB5C,yEAAyE;AACzE,IAAI,UAA6D,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAC7B,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA0B,EAAE;IAC5D,MAAM,UAAU,GAAU,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAC5B,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,EACzE,sBAAsB,CACvB,CAAC;IAEF,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AACpE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -12,7 +12,6 @@ export * as sessionStore from "./session-store.js";
12
12
  export * as taskStore from "./task-store.js";
13
13
  export * as workspaceStore from "./workspace-store.js";
14
14
  export * as personaStore from "./persona-store.js";
15
- export * as findingStore from "./finding-store.js";
16
15
  export * as widgetStore from "./widget-store.js";
17
16
  export * as settingsStore from "./settings-store.js";
18
17
  export * as envRegistry from "./env-registry.js";
@@ -31,8 +30,8 @@ export type { CredentialProviderConfig, DatabaseInstance } from "./credential-pr
31
30
  export type { GitHubAccountInfo, UpdateGitHubAccountFields } from "./github-account-store.js";
32
31
  export { isAllowedSettingKey, WRITABLE_SETTING_KEYS } from "./settings-store.js";
33
32
  export { VALID_PROVIDERS, VALID_CLAUDE_VALUES, VALID_TOGGLE_VALUES, parseCredentialProviderConfig, isValidCredentialProviderConfig, } from "./credential-providers.js";
34
- export { persistEvent } from "./event-store.js";
35
- export type { DomainEvent } from "./event-store.js";
33
+ export { persistEvent, queryDomainEvents } from "./event-store.js";
34
+ export type { DomainEvent, DomainEventQuery } from "./event-store.js";
36
35
  export { grackleHome } from "./paths.js";
37
36
  export { encrypt, decrypt } from "./crypto.js";
38
37
  export { safeParseJsonArray } from "./json-helpers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EACnD,sBAAsB,EAAE,cAAc,EACtC,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAC9D,OAAO,IAAI,EAAE,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,6BAA6B,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAG9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EACnD,sBAAsB,EAAE,cAAc,EACtC,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAC9D,OAAO,IAAI,EAAE,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,6BAA6B,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAG9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,6 @@ export * as sessionStore from "./session-store.js";
14
14
  export * as taskStore from "./task-store.js";
15
15
  export * as workspaceStore from "./workspace-store.js";
16
16
  export * as personaStore from "./persona-store.js";
17
- export * as findingStore from "./finding-store.js";
18
17
  export * as widgetStore from "./widget-store.js";
19
18
  export * as settingsStore from "./settings-store.js";
20
19
  export * as envRegistry from "./env-registry.js";
@@ -30,7 +29,7 @@ export * as channelGrantStore from "./channel-grant-store.js";
30
29
  export { isAllowedSettingKey, WRITABLE_SETTING_KEYS } from "./settings-store.js";
31
30
  export { VALID_PROVIDERS, VALID_CLAUDE_VALUES, VALID_TOGGLE_VALUES, parseCredentialProviderConfig, isValidCredentialProviderConfig, } from "./credential-providers.js";
32
31
  // ─── Event Store ───────────────────────────────────────────
33
- export { persistEvent } from "./event-store.js";
32
+ export { persistEvent, queryDomainEvents } from "./event-store.js";
34
33
  // ─── Utilities ─────────────────────────────────────────────
35
34
  export { grackleHome } from "./paths.js";
36
35
  export { encrypt, decrypt } from "./crypto.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,OAAO,EACL,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EACnD,sBAAsB,EAAE,cAAc,EACtC,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAC9D,OAAO,IAAI,EAAE,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,8DAA8D;AAC9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AA+BtC,8DAA8D;AAC9D,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,6BAA6B,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,8DAA8D;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,OAAO,EACL,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EACnD,sBAAsB,EAAE,cAAc,EACtC,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAC9D,OAAO,IAAI,EAAE,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,8DAA8D;AAC9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AA+BtC,8DAA8D;AAC9D,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,6BAA6B,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGnE,8DAA8D;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/database",
3
- "version": "0.115.2",
3
+ "version": "0.117.0",
4
4
  "description": "SQLite persistence layer for Grackle — schema, stores, and migrations",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -32,7 +32,7 @@
32
32
  "better-sqlite3": "^11.0.0",
33
33
  "drizzle-orm": "^0.45.2",
34
34
  "uuid": "^11.1.1",
35
- "@grackle-ai/common": "0.115.2"
35
+ "@grackle-ai/common": "0.117.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@rushstack/heft": "1.2.7",
@@ -1,13 +0,0 @@
1
- import { type FindingRow } from "./schema.js";
2
- export type { FindingRow };
3
- /** Insert a new finding record. */
4
- export declare function postFinding(id: string, workspaceId: string, taskId: string, sessionId: string, category: string, title: string, content: string, tags: string[]): void;
5
- /** Retrieve a single finding by ID. */
6
- export declare function getFinding(id: string): FindingRow | undefined;
7
- /**
8
- * Query findings, optionally filtering by workspace, categories, and tags.
9
- *
10
- * When `workspaceId` is empty, returns findings across all workspaces.
11
- */
12
- export declare function queryFindings(workspaceId: string, categories?: string[], tags?: string[], limit?: number): FindingRow[];
13
- //# sourceMappingURL=finding-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finding-store.d.ts","sourceRoot":"","sources":["../src/finding-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAIxD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,mCAAmC;AACnC,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,IAAI,CAWN;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,EAAE,CA4Cd"}
@@ -1,70 +0,0 @@
1
- import db from "./db.js";
2
- import { findings } from "./schema.js";
3
- import { eq, desc, sql, and } from "drizzle-orm";
4
- import { safeParseJsonArray } from "./json-helpers.js";
5
- /** Insert a new finding record. */
6
- export function postFinding(id, workspaceId, taskId, sessionId, category, title, content, tags) {
7
- db.insert(findings).values({
8
- id,
9
- workspaceId,
10
- taskId,
11
- sessionId,
12
- category,
13
- title,
14
- content,
15
- tags: JSON.stringify(tags),
16
- }).run();
17
- }
18
- /** Retrieve a single finding by ID. */
19
- export function getFinding(id) {
20
- return db.select().from(findings)
21
- .where(eq(findings.id, id))
22
- .get();
23
- }
24
- /**
25
- * Query findings, optionally filtering by workspace, categories, and tags.
26
- *
27
- * When `workspaceId` is empty, returns findings across all workspaces.
28
- */
29
- export function queryFindings(workspaceId, categories, tags, limit) {
30
- const maxResults = Math.min(limit || 50, 100);
31
- const hasWorkspaceFilter = workspaceId.length > 0;
32
- const hasCategoryFilter = categories !== undefined && categories.length > 0;
33
- let results;
34
- if (hasWorkspaceFilter && hasCategoryFilter) {
35
- results = db.select().from(findings)
36
- .where(and(eq(findings.workspaceId, workspaceId), sql `${findings.category} IN (SELECT value FROM json_each(${JSON.stringify(categories)}))`))
37
- .orderBy(desc(findings.createdAt))
38
- .limit(maxResults)
39
- .all();
40
- }
41
- else if (hasWorkspaceFilter) {
42
- results = db.select().from(findings)
43
- .where(eq(findings.workspaceId, workspaceId))
44
- .orderBy(desc(findings.createdAt))
45
- .limit(maxResults)
46
- .all();
47
- }
48
- else if (hasCategoryFilter) {
49
- results = db.select().from(findings)
50
- .where(sql `${findings.category} IN (SELECT value FROM json_each(${JSON.stringify(categories)}))`)
51
- .orderBy(desc(findings.createdAt))
52
- .limit(maxResults)
53
- .all();
54
- }
55
- else {
56
- results = db.select().from(findings)
57
- .orderBy(desc(findings.createdAt))
58
- .limit(maxResults)
59
- .all();
60
- }
61
- // Client-side tag filtering (simple approach)
62
- if (tags && tags.length > 0) {
63
- results = results.filter((r) => {
64
- const rowTags = safeParseJsonArray(r.tags);
65
- return tags.some((t) => rowTags.includes(t));
66
- });
67
- }
68
- return results;
69
- }
70
- //# sourceMappingURL=finding-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"finding-store.js","sourceRoot":"","sources":["../src/finding-store.ts"],"names":[],"mappings":"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"}