@cortexkit/opencode-magic-context 0.30.5 → 0.30.6

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.
@@ -55,6 +55,8 @@ interface DueTask {
55
55
  * arrived. Gate evaluation happens in the drain (pre- AND post-lease). Exported
56
56
  * for testing. */
57
57
  export declare function planDueTasks(db: Database, projectIdentity: string, tasks: readonly DreamTaskRuntimeConfig[], now: number): DueTask[];
58
+ /** Lease wait budget for manual /ctx-dream runs. */
59
+ export declare const MANUAL_RUN_LEASE_WAIT_MS = 60000;
58
60
  export interface ManualRunResult {
59
61
  /** Tasks that actually executed (gate passed, lease acquired). */
60
62
  ran: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"task-scheduler.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/dreamer/task-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWvD,OAAO,EAAoB,KAAK,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAElG;4BAC4B;AAC5B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;kFACkF;AAClF,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B;gFAC4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE;QACZ,yEAAyE;QACzE,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5C,CAAC;CACL;AAED;;+EAE+E;AAC/E,MAAM,MAAM,YAAY,GAAG,CACvB,IAAI,EAAE,sBAAsB,EAC5B,GAAG,EAAE;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KACjF,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,QAAQ,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzC,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAkED,UAAU,OAAO;IACb,MAAM,EAAE,sBAAsB,CAAC;IAC/B;wDACoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;mBAEmB;AACnB,wBAAgB,YAAY,CACxB,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,SAAS,sBAAsB,EAAE,EACxC,GAAG,EAAE,MAAM,GACZ,OAAO,EAAE,CA0BX;AAwLD,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAChC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,aAAa,CAAA;CAAE,GAC9D,OAAO,CAAC,eAAe,CAAC,CAiE1B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAuClF"}
1
+ {"version":3,"file":"task-scheduler.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/dreamer/task-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWvD,OAAO,EAAoB,KAAK,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAElG;4BAC4B;AAC5B,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;kFACkF;AAClF,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B;gFAC4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE;QACZ,yEAAyE;QACzE,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5C,CAAC;CACL;AAED;;+EAE+E;AAC/E,MAAM,MAAM,YAAY,GAAG,CACvB,IAAI,EAAE,sBAAsB,EAC5B,GAAG,EAAE;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KACjF,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,QAAQ,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzC,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAkED,UAAU,OAAO;IACb,MAAM,EAAE,sBAAsB,CAAC;IAC/B;wDACoD;IACpD,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;mBAEmB;AACnB,wBAAgB,YAAY,CACxB,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,SAAS,sBAAsB,EAAE,EACxC,GAAG,EAAE,MAAM,GACZ,OAAO,EAAE,CA0BX;AAuGD,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAuG/C,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAChC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,aAAa,CAAA;CAAE,GAC9D,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAuClF"}
@@ -25,6 +25,16 @@
25
25
  * - We skip merge commits via `--no-merges` so merge "Merge branch 'x'"
26
26
  * noise doesn't fill the index.
27
27
  */
28
+ /**
29
+ * Why `git log` produced no commits, when it failed. `not_a_repo` and
30
+ * `no_head` (a repo with zero commits) are structural: retrying every sweep
31
+ * tick cannot succeed and only floods the log, so callers put the project on
32
+ * a long re-probe cooldown instead. `transient` covers everything else
33
+ * (timeouts, missing git binary, permission errors) and keeps the normal
34
+ * retry cadence.
35
+ */
36
+ export type GitLogFailureKind = "not_a_repo" | "no_head" | "transient";
37
+ export declare function classifyGitLogFailure(message: string): GitLogFailureKind;
28
38
  export interface GitCommit {
29
39
  /** Full 40-char SHA. */
30
40
  sha: string;
@@ -61,5 +71,15 @@ export interface ReadGitCommitsOptions {
61
71
  * never crash the plugin.
62
72
  */
63
73
  export declare function readGitCommits(directory: string, options?: ReadGitCommitsOptions): Promise<GitCommit[]>;
74
+ /**
75
+ * Like {@link readGitCommits}, but also reports WHY the read failed so the
76
+ * sweep can distinguish structurally non-indexable directories (not a repo,
77
+ * repo with no commits) from transient errors. `failure` is null on success —
78
+ * including a successful read that matched zero commits.
79
+ */
80
+ export declare function readGitCommitsResult(directory: string, options?: ReadGitCommitsOptions): Promise<{
81
+ commits: GitCommit[];
82
+ failure: GitLogFailureKind | null;
83
+ }>;
64
84
  export declare function parseGitLogOutput(stdout: string): GitCommit[];
65
85
  //# sourceMappingURL=git-log-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-log-reader.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/git-log-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAeH,MAAM,WAAW,SAAS;IACtB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IAClC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,SAAS,EAAE,CAAC,CA4DtB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CA6C7D"}
1
+ {"version":3,"file":"git-log-reader.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/git-log-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAeH;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AAEvE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAUxE;AAED,MAAM,WAAW,SAAS;IACtB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IAClC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,qBAA0B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,CAAC,CAuEtE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CA6C7D"}
@@ -4,5 +4,5 @@ export { _resetIndexerGuards, embedUnembeddedCommits, type IndexCommitsOptions,
4
4
  export { type GitCommitSearchHit, type SearchGitCommitsOptions, searchGitCommitsSync, } from "./search-git-commits";
5
5
  export { clearProjectCommitEmbeddings, countEmbeddedCommits, loadProjectCommitEmbeddings, loadUnembeddedCommits, saveCommitEmbedding, } from "./storage-git-commit-embeddings";
6
6
  export { enforceProjectCap, evictOldestCommits, getCommitBySha, getCommitCount, getLatestIndexedCommitTimeMs, type StoredGitCommit, upsertCommit, upsertCommits, } from "./storage-git-commits";
7
- export { acquireGitSweepLease, GIT_SWEEP_COOLDOWN_MS, GIT_SWEEP_LEASE_RENEWAL_MS, GIT_SWEEP_LEASE_TTL_MS, type GitSweepCoordinatorState, type GitSweepLeaseResult, getGitSweepCoordinatorState, markGitSweepSuccessAndRelease, releaseGitSweepLease, renewGitSweepLease, } from "./sweep-coordinator";
7
+ export { acquireGitSweepLease, GIT_SWEEP_COOLDOWN_MS, GIT_SWEEP_LEASE_RENEWAL_MS, GIT_SWEEP_LEASE_TTL_MS, type GitSweepCoordinatorState, type GitSweepLeaseResult, getGitSweepCoordinatorState, markGitSweepSuccessAndRelease, parkGitSweepNonIndexable, releaseGitSweepLease, renewGitSweepLease, } from "./sweep-coordinator";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,sBAAsB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,KAAK,eAAe,EACpB,YAAY,EACZ,aAAa,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,sBAAsB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACH,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,KAAK,eAAe,EACpB,YAAY,EACZ,aAAa,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,qBAAqB,CAAC"}
@@ -23,6 +23,12 @@ export interface IndexCommitsResult {
23
23
  updated: number;
24
24
  evicted: number;
25
25
  embedded: number;
26
+ /**
27
+ * Set when `git log` failed structurally (directory is not a repo, or the
28
+ * repo has no commits yet). The sweep uses this to park the project on a
29
+ * long re-probe cooldown instead of retrying every tick.
30
+ */
31
+ nonIndexable: boolean;
26
32
  }
27
33
  /**
28
34
  * Sweep commits from `directory` (must be a git repo), upsert them for
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAwBvD,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;sEACkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CACxC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAkE7B;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyD/F;AAED,2CAA2C;AAC3C,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAwBvD,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;sEACkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CACxC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAyE7B;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyD/F;AAED,2CAA2C;AAC3C,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
@@ -1,6 +1,12 @@
1
1
  import type { Database } from "../../../shared/sqlite";
2
2
  export declare const GIT_SWEEP_COOLDOWN_MS: number;
3
3
  export declare const GIT_SWEEP_LEASE_TTL_MS: number;
4
+ /**
5
+ * Re-probe horizon for structurally non-indexable directories (not a repo /
6
+ * empty repo). Long enough to stop per-tick log flooding, short enough that a
7
+ * directory that becomes a real repo starts indexing within a day.
8
+ */
9
+ export declare const GIT_SWEEP_NON_INDEXABLE_REPROBE_MS: number;
4
10
  export declare const GIT_SWEEP_LEASE_RENEWAL_MS: number;
5
11
  export type GitSweepSkipReason = "lease_active" | "cooldown_active";
6
12
  export interface GitSweepLeaseAcquired {
@@ -44,5 +50,16 @@ export declare function getGitSweepCoordinatorState(db: Database, projectPath: s
44
50
  export declare function acquireGitSweepLease(db: Database, projectPath: string, holderId: string, options?: AcquireGitSweepLeaseOptions): GitSweepLeaseResult;
45
51
  export declare function renewGitSweepLease(db: Database, projectPath: string, holderId: string, leaseTtlMs?: number): boolean;
46
52
  export declare function markGitSweepSuccessAndRelease(db: Database, projectPath: string, holderId: string): boolean;
53
+ /**
54
+ * Park a structurally non-indexable project (not a git repo, or a repo with
55
+ * no commits) and release the lease. Re-probes are still allowed after
56
+ * `reprobeMs` — a plain directory can be `git init`-ed and an empty repo gets
57
+ * its first commit — but until then every sweep tick would fail identically,
58
+ * so the cooldown gate absorbs them. Implemented by future-dating
59
+ * `last_swept_at` so the existing cooldown arithmetic
60
+ * (`last_swept_at + cooldownMs`) yields the long re-probe horizon without a
61
+ * schema change; `last_swept_at` is only ever read by that arithmetic.
62
+ */
63
+ export declare function parkGitSweepNonIndexable(db: Database, projectPath: string, holderId: string, reprobeMs?: number): boolean;
47
64
  export declare function releaseGitSweepLease(db: Database, projectPath: string, holderId: string): void;
48
65
  //# sourceMappingURL=sweep-coordinator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sweep-coordinator.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/sweep-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAKpD,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AACpD,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,KAAK,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAE/E,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AASD,MAAM,WAAW,2BAA2B;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AA8BD,wBAAgB,2BAA2B,CACvC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,GACpB,wBAAwB,GAAG,IAAI,CASjC;AAED,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,2BAAgC,GAC1C,mBAAmB,CA2DrB;AAED,wBAAgB,kBAAkB,CAC9B,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAyB,GACpC,OAAO,CAeT;AAED,wBAAgB,6BAA6B,CACzC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAgBT;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAU9F"}
1
+ {"version":3,"file":"sweep-coordinator.d.ts","sourceRoot":"","sources":["../../../../src/features/magic-context/git-commits/sweep-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAKpD,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AACpD;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,QAAsB,CAAC;AACtE,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,KAAK,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAE/E,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AASD,MAAM,WAAW,2BAA2B;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AA8BD,wBAAgB,2BAA2B,CACvC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,GACpB,wBAAwB,GAAG,IAAI,CASjC;AAED,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,2BAAgC,GAC1C,mBAAmB,CA2DrB;AAED,wBAAgB,kBAAkB,CAC9B,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,SAAyB,GACpC,OAAO,CAeT;AAED,wBAAgB,6BAA6B,CACzC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAgBT;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACpC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAA2C,GACvD,OAAO,CAiBT;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAU9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/command-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/command-handler.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -167985,6 +167985,20 @@ function markGitSweepSuccessAndRelease(db, projectPath, holderId) {
167985
167985
  return result.changes === 1;
167986
167986
  });
167987
167987
  }
167988
+ function parkGitSweepNonIndexable(db, projectPath, holderId, reprobeMs = GIT_SWEEP_NON_INDEXABLE_REPROBE_MS) {
167989
+ return runImmediate2(db, () => {
167990
+ const now = Date.now();
167991
+ const sweptAt = now + reprobeMs - GIT_SWEEP_COOLDOWN_MS;
167992
+ const result = db.prepare(`UPDATE git_sweep_coordinator
167993
+ SET lease_holder = NULL,
167994
+ lease_expires_at = NULL,
167995
+ last_swept_at = ?
167996
+ WHERE project_path = ?
167997
+ AND lease_holder = ?
167998
+ AND lease_expires_at > ?`).run(sweptAt, projectPath, holderId, now);
167999
+ return result.changes === 1;
168000
+ });
168001
+ }
167988
168002
  function releaseGitSweepLease(db, projectPath, holderId) {
167989
168003
  runImmediate2(db, () => {
167990
168004
  db.prepare(`UPDATE git_sweep_coordinator
@@ -167994,10 +168008,11 @@ function releaseGitSweepLease(db, projectPath, holderId) {
167994
168008
  AND lease_holder = ?`).run(projectPath, holderId);
167995
168009
  });
167996
168010
  }
167997
- var GIT_SWEEP_COOLDOWN_MS, GIT_SWEEP_LEASE_TTL_MS, GIT_SWEEP_LEASE_RENEWAL_MS;
168011
+ var GIT_SWEEP_COOLDOWN_MS, GIT_SWEEP_LEASE_TTL_MS, GIT_SWEEP_NON_INDEXABLE_REPROBE_MS, GIT_SWEEP_LEASE_RENEWAL_MS;
167998
168012
  var init_sweep_coordinator = __esm(() => {
167999
168013
  GIT_SWEEP_COOLDOWN_MS = 10 * 60 * 1000;
168000
168014
  GIT_SWEEP_LEASE_TTL_MS = 5 * 60 * 1000;
168015
+ GIT_SWEEP_NON_INDEXABLE_REPROBE_MS = 24 * 60 * 60 * 1000;
168001
168016
  GIT_SWEEP_LEASE_RENEWAL_MS = 60 * 1000;
168002
168017
  });
168003
168018
 
@@ -192632,11 +192647,21 @@ function recordTransientFailure(db, projectIdentity, due, finishedAt, error51) {
192632
192647
  });
192633
192648
  }
192634
192649
  }
192650
+ var LEASE_WAIT_POLL_MS = 2000;
192651
+ var MANUAL_RUN_LEASE_WAIT_MS = 60000;
192635
192652
  async function runDomainGroup(deps, group, cb) {
192636
192653
  const { db, projectIdentity, executor } = deps;
192637
192654
  const leaseKey = leaseKeyFor(group[0].config.task, projectIdentity);
192638
192655
  const holderId = crypto.randomUUID();
192639
- if (!acquireLease(db, holderId, leaseKey)) {
192656
+ let acquired = acquireLease(db, holderId, leaseKey);
192657
+ if (!acquired && cb?.leaseWaitMs) {
192658
+ const deadline = Date.now() + cb.leaseWaitMs;
192659
+ while (!acquired && Date.now() < deadline) {
192660
+ await new Promise((resolve4) => setTimeout(resolve4, LEASE_WAIT_POLL_MS));
192661
+ acquired = acquireLease(db, holderId, leaseKey);
192662
+ }
192663
+ }
192664
+ if (!acquired) {
192640
192665
  log(`[dreamer] domain lease busy (${leaseKey}) — deferring ${group.length} task(s)`);
192641
192666
  for (const due of group)
192642
192667
  cb?.onBusy?.(due.config.task);
@@ -192731,6 +192756,7 @@ async function runManualDream(deps) {
192731
192756
  }
192732
192757
  await Promise.all([...groups.values()].map((group) => runDomainGroup({ ...deps, executor: deps.executor }, group, {
192733
192758
  forceGate,
192759
+ leaseWaitMs: MANUAL_RUN_LEASE_WAIT_MS,
192734
192760
  onRan: (t) => result.ran.push(t),
192735
192761
  onFailed: (t) => result.failed.push(t),
192736
192762
  onBusy: (t) => result.deferredBusy.push(t)
@@ -192779,7 +192805,15 @@ var GIT_TIMEOUT_MS3 = 1e4;
192779
192805
  var DEFAULT_MAX_COMMITS = 5000;
192780
192806
  var RECORD_SEPARATOR = "\x1E";
192781
192807
  var FIELD_SEPARATOR = "\x1F";
192782
- async function readGitCommits(directory, options = {}) {
192808
+ function classifyGitLogFailure(message) {
192809
+ if (message.includes("not a git repository"))
192810
+ return "not_a_repo";
192811
+ if (message.includes("unknown revision or path not in the working tree") || message.includes("does not have any commits yet") || message.includes("bad revision")) {
192812
+ return "no_head";
192813
+ }
192814
+ return "transient";
192815
+ }
192816
+ async function readGitCommitsResult(directory, options = {}) {
192783
192817
  const revision = options.branch ?? "HEAD";
192784
192818
  if (revision.startsWith("-")) {
192785
192819
  throw new Error(`readGitCommits: refusing revision that looks like an option: "${revision}"`);
@@ -192807,13 +192841,18 @@ async function readGitCommits(directory, options = {}) {
192807
192841
  stdout = result.stdout;
192808
192842
  } catch (error51) {
192809
192843
  const message = error51 instanceof Error ? error51.message : String(error51);
192810
- log(`[git-commits] readGitCommits failed for ${projectLabel}: ${message.slice(0, 500)}`);
192811
- return [];
192844
+ const failure = classifyGitLogFailure(message);
192845
+ if (failure === "transient") {
192846
+ log(`[git-commits] readGitCommits failed for ${projectLabel}: ${message.slice(0, 500)}`);
192847
+ } else {
192848
+ log(`[git-commits] ${projectLabel} is not indexable (${failure})`);
192849
+ }
192850
+ return { commits: [], failure };
192812
192851
  }
192813
192852
  if (stdout.trim().length === 0) {
192814
192853
  log(`[git-commits] readGitCommits returned empty stdout for ${projectLabel} (sinceMs=${options.sinceMs ?? "none"} args=${args.slice(0, 4).join(" ")})`);
192815
192854
  }
192816
- return parseGitLogOutput(stdout);
192855
+ return { commits: parseGitLogOutput(stdout), failure: null };
192817
192856
  }
192818
192857
  function parseGitLogOutput(stdout) {
192819
192858
  const commits = [];
@@ -192872,7 +192911,8 @@ async function indexCommitsForProject(db, projectPath, directory, options) {
192872
192911
  inserted: 0,
192873
192912
  updated: 0,
192874
192913
  evicted: 0,
192875
- embedded: 0
192914
+ embedded: 0,
192915
+ nonIndexable: false
192876
192916
  };
192877
192917
  if (indexInProgress.has(projectPath)) {
192878
192918
  log(`[git-commits] index already in progress for ${projectPath}, skipping`);
@@ -192882,12 +192922,17 @@ async function indexCommitsForProject(db, projectPath, directory, options) {
192882
192922
  try {
192883
192923
  const latestIndexed = getLatestIndexedCommitTimeMs(db, projectPath);
192884
192924
  const sinceMs = latestIndexed !== null ? Math.max(latestIndexed - 60000, Date.now() - options.sinceDays * MS_PER_DAY) : Date.now() - options.sinceDays * MS_PER_DAY;
192885
- const commits = await readGitCommits(directory, {
192925
+ const read = await readGitCommitsResult(directory, {
192886
192926
  sinceMs,
192887
192927
  maxCommits: options.maxCommits,
192888
192928
  projectIdentity: projectPath
192889
192929
  });
192930
+ const commits = read.commits;
192890
192931
  result.scanned = commits.length;
192932
+ if (read.failure === "not_a_repo" || read.failure === "no_head") {
192933
+ result.nonIndexable = true;
192934
+ return result;
192935
+ }
192891
192936
  if (commits.length === 0) {
192892
192937
  result.evicted = enforceProjectCap(db, projectPath, options.maxCommits);
192893
192938
  log(`[git-commits] no new commits for ${projectPath} (sinceMs=${sinceMs} latestIndexed=${latestIndexed ?? "none"} evicted=${result.evicted})`);
@@ -193320,6 +193365,12 @@ async function sweepGitCommits(args) {
193320
193365
  sinceDays: gitCommitIndexing.since_days,
193321
193366
  maxCommits: gitCommitIndexing.max_commits
193322
193367
  });
193368
+ if (result.nonIndexable) {
193369
+ if (!parkGitSweepNonIndexable(db, projectIdentity, holderId)) {
193370
+ releaseGitSweepLease(db, projectIdentity, holderId);
193371
+ }
193372
+ return;
193373
+ }
193323
193374
  let drainedEmbeddings = 0;
193324
193375
  if (result.embedded > 0) {
193325
193376
  drainedEmbeddings = await embedUnembeddedCommits(db, projectIdentity);
@@ -194631,7 +194682,7 @@ function summarizeManualDream(s) {
194631
194682
  if (s.skippedNoWork.length > 0)
194632
194683
  lines.push(`Skipped (no work): ${s.skippedNoWork.join(", ")}`);
194633
194684
  if (s.deferredBusy.length > 0)
194634
- lines.push(`Busy (already running): ${s.deferredBusy.join(", ")}`);
194685
+ lines.push(`Busy: ${s.deferredBusy.join(", ")} — another dream task holds this domain's lease; retry in a minute`);
194635
194686
  if (s.ran.length === 0 && s.failed.length === 0 && s.skippedNoWork.length === 0 && s.deferredBusy.length === 0) {
194636
194687
  lines.push("No enabled dream tasks to run.");
194637
194688
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dream-timer.d.ts","sourceRoot":"","sources":["../../src/plugin/dream-timer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AASpE,OAAO,EAEH,KAAK,wBAAwB,EAChC,MAAM,8DAA8D,CAAC;AA4BtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7C;;;;;GAKG;AACH,UAAU,mBAAmB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,CACvB,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,MAAM,KACtB,wBAAwB,GAAG,IAAI,CAAC;IACrC;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,CACvB,SAAS,EAAE,MAAM,KAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACvE;AA+CD;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CACzC,IAAI,EAAE,mBAAmB,GAC1B,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAyDnC"}
1
+ {"version":3,"file":"dream-timer.d.ts","sourceRoot":"","sources":["../../src/plugin/dream-timer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AASpE,OAAO,EAEH,KAAK,wBAAwB,EAChC,MAAM,8DAA8D,CAAC;AA6BtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7C;;;;;GAKG;AACH,UAAU,mBAAmB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,CACvB,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,MAAM,KACtB,wBAAwB,GAAG,IAAI,CAAC;IACrC;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,CACvB,SAAS,EAAE,MAAM,KAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACvE;AA+CD;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CACzC,IAAI,EAAE,mBAAmB,GAC1B,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAyDnC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/opencode-magic-context",
3
- "version": "0.30.5",
3
+ "version": "0.30.6",
4
4
  "type": "module",
5
5
  "description": "OpenCode plugin for Magic Context — cross-session memory and context management",
6
6
  "main": "dist/index.js",