sidekick-shared 0.22.0 → 0.23.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 (86) hide show
  1. package/README.md +51 -43
  2. package/dist/accountRegistry.d.ts +2 -0
  3. package/dist/accountStatus.d.ts +1 -0
  4. package/dist/accountStatus.js +6 -0
  5. package/dist/accounts.js +2 -0
  6. package/dist/aggregation/EventAggregator.d.ts +32 -1
  7. package/dist/aggregation/EventAggregator.js +238 -25
  8. package/dist/aggregation/snapshot.js +1 -1
  9. package/dist/aggregation/types.d.ts +23 -1
  10. package/dist/analytics/codeImpact.d.ts +20 -0
  11. package/dist/analytics/codeImpact.js +21 -0
  12. package/dist/analytics/compactionLedger.d.ts +11 -0
  13. package/dist/analytics/compactionLedger.js +31 -0
  14. package/dist/analytics/qualityScore.d.ts +26 -0
  15. package/dist/analytics/qualityScore.js +115 -0
  16. package/dist/codexProfiles.js +2 -0
  17. package/dist/context/composer.d.ts +3 -2
  18. package/dist/context/composer.js +5 -5
  19. package/dist/doctor.d.ts +55 -0
  20. package/dist/doctor.js +244 -0
  21. package/dist/errorHistory.d.ts +32 -0
  22. package/dist/errorHistory.js +94 -0
  23. package/dist/extractors/errorTaxonomy.d.ts +6 -0
  24. package/dist/extractors/errorTaxonomy.js +47 -0
  25. package/dist/extractors/toolCall.d.ts +9 -0
  26. package/dist/extractors/toolCall.js +79 -0
  27. package/dist/handoffUrl.d.ts +7 -0
  28. package/dist/handoffUrl.js +26 -0
  29. package/dist/index.d.ts +32 -9
  30. package/dist/index.js +62 -24
  31. package/dist/parsers/codexParser.js +13 -0
  32. package/dist/parsers/openCodeParser.js +13 -0
  33. package/dist/parsers/planExtractor.js +17 -6
  34. package/dist/paths.d.ts +10 -0
  35. package/dist/paths.js +18 -5
  36. package/dist/projectMigration.d.ts +23 -0
  37. package/dist/projectMigration.js +95 -0
  38. package/dist/providers/codexDatabase.d.ts +1 -11
  39. package/dist/providers/openCodeDatabase.d.ts +1 -31
  40. package/dist/providers/openCodeDatabase.js +9 -8
  41. package/dist/providers/types.d.ts +1 -0
  42. package/dist/readers/decisions.d.ts +2 -1
  43. package/dist/readers/decisions.js +2 -4
  44. package/dist/readers/handoff.d.ts +2 -1
  45. package/dist/readers/handoff.js +13 -8
  46. package/dist/readers/helpers.d.ts +3 -0
  47. package/dist/readers/helpers.js +12 -0
  48. package/dist/readers/notes.d.ts +2 -1
  49. package/dist/readers/notes.js +2 -4
  50. package/dist/readers/plans.js +1 -1
  51. package/dist/readers/tasks.d.ts +2 -1
  52. package/dist/readers/tasks.js +2 -4
  53. package/dist/schemas/index.d.ts +2 -0
  54. package/dist/schemas/index.js +10 -1
  55. package/dist/schemas/observedSessionV1.d.ts +499 -0
  56. package/dist/schemas/observedSessionV1.js +69 -0
  57. package/dist/schemas/sessionEvent.d.ts +13 -0
  58. package/dist/schemas/sessionEvent.js +19 -0
  59. package/dist/search/sessionSearch.d.ts +2 -2
  60. package/dist/search/sessionSearch.js +2 -3
  61. package/dist/sessionMonitor.d.ts +29 -0
  62. package/dist/sessionMonitor.js +71 -0
  63. package/dist/statusline/BurnRateCalculator.d.ts +14 -0
  64. package/dist/statusline/BurnRateCalculator.js +45 -0
  65. package/dist/statusline/formatter.d.ts +16 -0
  66. package/dist/statusline/formatter.js +77 -0
  67. package/dist/statusline/index.d.ts +7 -0
  68. package/dist/statusline/index.js +13 -0
  69. package/dist/types/codex.d.ts +2 -0
  70. package/dist/types/historicalData.d.ts +35 -1
  71. package/dist/types/historicalData.js +6 -2
  72. package/dist/types/observedSessionV1.d.ts +70 -0
  73. package/dist/types/observedSessionV1.js +185 -0
  74. package/dist/types/opencode.d.ts +1 -0
  75. package/dist/types/sessionEvent.d.ts +18 -1
  76. package/dist/watchers/eventBridge.js +1 -0
  77. package/dist/watchers/types.d.ts +5 -0
  78. package/dist/writers/atomic.d.ts +4 -0
  79. package/dist/writers/atomic.js +113 -0
  80. package/dist/writers/decisions.d.ts +12 -0
  81. package/dist/writers/decisions.js +88 -0
  82. package/dist/writers/notes.d.ts +8 -0
  83. package/dist/writers/notes.js +82 -0
  84. package/dist/writers/tasks.d.ts +6 -0
  85. package/dist/writers/tasks.js +100 -0
  86. package/package.json +5 -1
package/dist/paths.js CHANGED
@@ -43,6 +43,7 @@ exports.getProjectDataPath = getProjectDataPath;
43
43
  exports.getGlobalDataPath = getGlobalDataPath;
44
44
  exports.encodeWorkspacePath = encodeWorkspacePath;
45
45
  exports.getProjectSlug = getProjectSlug;
46
+ exports.resolveProjectIdentity = resolveProjectIdentity;
46
47
  exports.getProjectSlugRaw = getProjectSlugRaw;
47
48
  const fs = __importStar(require("fs"));
48
49
  const path = __importStar(require("path"));
@@ -86,15 +87,28 @@ function encodeWorkspacePath(workspacePath) {
86
87
  * Resolves symlinks, then encodes for use as a filename.
87
88
  */
88
89
  function getProjectSlug(cwd) {
89
- const dir = cwd || process.cwd();
90
+ return resolveProjectIdentity(cwd).canonicalSlug;
91
+ }
92
+ /** Resolves the canonical project identity used by all new readers and writers. */
93
+ function resolveProjectIdentity(cwd) {
94
+ const dir = path.resolve(cwd || process.cwd());
90
95
  let resolved;
91
96
  try {
92
97
  resolved = fs.realpathSync(dir);
93
98
  }
94
99
  catch {
95
- resolved = path.resolve(dir);
100
+ resolved = dir;
96
101
  }
97
- return encodeWorkspacePath(resolved);
102
+ const canonicalSlug = encodeWorkspacePath(resolved);
103
+ const legacySlug = encodeWorkspacePath(dir);
104
+ return {
105
+ cwd: dir,
106
+ resolvedCwd: resolved,
107
+ canonicalSlug,
108
+ legacySlug,
109
+ candidates: canonicalSlug === legacySlug ? [canonicalSlug] : [canonicalSlug, legacySlug],
110
+ hasLegacyMismatch: canonicalSlug !== legacySlug,
111
+ };
98
112
  }
99
113
  /**
100
114
  * Derives a project slug WITHOUT resolving symlinks.
@@ -102,6 +116,5 @@ function getProjectSlug(cwd) {
102
116
  * Use this when reading data written by the extension.
103
117
  */
104
118
  function getProjectSlugRaw(cwd) {
105
- const dir = cwd || process.cwd();
106
- return encodeWorkspacePath(path.resolve(dir));
119
+ return resolveProjectIdentity(cwd).legacySlug;
107
120
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview One-time migration of legacy raw-slug project stores.
3
+ *
4
+ * 0.23.0 switched all readers and writers to the canonical
5
+ * (symlink-resolved) project slug. Workspaces whose literal path differs
6
+ * from its realpath still hold pre-0.23 data under the legacy raw slug;
7
+ * this helper copies those stores to the canonical slug so they stay
8
+ * visible without any manual merge.
9
+ *
10
+ * @module projectMigration
11
+ */
12
+ import { type ProjectIdentity } from './paths';
13
+ /**
14
+ * Copies legacy raw-slug project stores to the canonical slug, once.
15
+ *
16
+ * Only copies when the canonical file does not exist yet, so it can never
17
+ * overwrite newer data; the legacy file is kept as a read-only fallback.
18
+ * Best-effort per store — a failed copy leaves that store on the legacy
19
+ * read path.
20
+ *
21
+ * @returns The canonical paths that were created (empty when none).
22
+ */
23
+ export declare function migrateLegacyProjectStores(cwdOrIdentity: string | ProjectIdentity): string[];
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview One-time migration of legacy raw-slug project stores.
4
+ *
5
+ * 0.23.0 switched all readers and writers to the canonical
6
+ * (symlink-resolved) project slug. Workspaces whose literal path differs
7
+ * from its realpath still hold pre-0.23 data under the legacy raw slug;
8
+ * this helper copies those stores to the canonical slug so they stay
9
+ * visible without any manual merge.
10
+ *
11
+ * @module projectMigration
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.migrateLegacyProjectStores = migrateLegacyProjectStores;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const paths_1 = require("./paths");
51
+ /** Project-scoped JSON store subdomains shared by the extension and CLI. */
52
+ const PROJECT_STORE_SUBDOMAINS = [
53
+ 'tasks',
54
+ 'decisions',
55
+ 'notifications',
56
+ 'knowledge-notes',
57
+ 'plans',
58
+ ];
59
+ /**
60
+ * Copies legacy raw-slug project stores to the canonical slug, once.
61
+ *
62
+ * Only copies when the canonical file does not exist yet, so it can never
63
+ * overwrite newer data; the legacy file is kept as a read-only fallback.
64
+ * Best-effort per store — a failed copy leaves that store on the legacy
65
+ * read path.
66
+ *
67
+ * @returns The canonical paths that were created (empty when none).
68
+ */
69
+ function migrateLegacyProjectStores(cwdOrIdentity) {
70
+ const identity = typeof cwdOrIdentity === 'string' ? (0, paths_1.resolveProjectIdentity)(cwdOrIdentity) : cwdOrIdentity;
71
+ if (!identity.hasLegacyMismatch)
72
+ return [];
73
+ const pairs = PROJECT_STORE_SUBDOMAINS.map((subdomain) => [
74
+ (0, paths_1.getProjectDataPath)(identity.legacySlug, subdomain),
75
+ (0, paths_1.getProjectDataPath)(identity.canonicalSlug, subdomain),
76
+ ]);
77
+ pairs.push([
78
+ path.join((0, paths_1.getConfigDir)(), 'handoffs', `${identity.legacySlug}-latest.md`),
79
+ path.join((0, paths_1.getConfigDir)(), 'handoffs', `${identity.canonicalSlug}-latest.md`),
80
+ ]);
81
+ const migrated = [];
82
+ for (const [legacyPath, canonicalPath] of pairs) {
83
+ try {
84
+ if (!fs.existsSync(legacyPath) || fs.existsSync(canonicalPath))
85
+ continue;
86
+ fs.mkdirSync(path.dirname(canonicalPath), { recursive: true });
87
+ fs.copyFileSync(legacyPath, canonicalPath, fs.constants.COPYFILE_EXCL);
88
+ migrated.push(canonicalPath);
89
+ }
90
+ catch {
91
+ // Best effort: an unmigrated store falls back to the legacy read path.
92
+ }
93
+ }
94
+ return migrated;
95
+ }
@@ -2,17 +2,7 @@
2
2
  * Read-only SQLite wrapper for Codex CLI's state database.
3
3
  * Ported from sidekick-vscode/src/services/providers/CodexDatabase.ts
4
4
  */
5
- export interface CodexDbThread {
6
- id: string;
7
- rollout_path: string;
8
- cwd: string;
9
- created_at: number;
10
- updated_at: number;
11
- title?: string;
12
- tokens_used?: number;
13
- first_user_message?: string;
14
- forked_from_id?: string;
15
- }
5
+ import type { CodexDbThread } from '../types/codex';
16
6
  export declare class CodexDatabase {
17
7
  private readonly dbPath;
18
8
  private sqlite3Available;
@@ -2,37 +2,7 @@
2
2
  * Read-only SQLite wrapper for OpenCode's database.
3
3
  * Ported from sidekick-vscode/src/services/providers/OpenCodeDatabase.ts
4
4
  */
5
- export interface DbProject {
6
- id: string;
7
- worktree: string;
8
- name: string | null;
9
- sandboxes: string[];
10
- time_created: number;
11
- time_updated: number;
12
- }
13
- export interface DbSession {
14
- id: string;
15
- project_id: string;
16
- title: string;
17
- directory: string;
18
- time_created: number;
19
- time_updated: number;
20
- }
21
- export interface DbMessage {
22
- id: string;
23
- session_id: string;
24
- time_created: number;
25
- time_updated: number;
26
- data: string;
27
- }
28
- export interface DbPart {
29
- id: string;
30
- message_id: string;
31
- session_id: string;
32
- time_created: number;
33
- time_updated: number;
34
- data: string;
35
- }
5
+ import type { DbMessage, DbPart, DbProject, DbSession } from '../types/opencode';
36
6
  export interface OpenCodeDbRuntimeStatus {
37
7
  available: boolean;
38
8
  kind: 'available' | 'db_missing' | 'sqlite_missing' | 'sqlite_blocked' | 'query_failed';
@@ -89,15 +89,16 @@ class OpenCodeDatabase {
89
89
  query(sql, params = []) {
90
90
  if (!this.open())
91
91
  return [];
92
- let query = sql;
93
- for (const param of params) {
92
+ let paramIndex = 0;
93
+ const query = sql.replace(/\?/g, () => {
94
+ if (paramIndex >= params.length)
95
+ return '?';
96
+ const param = params[paramIndex++];
94
97
  if (typeof param === 'number')
95
- query = query.replace('?', String(param));
96
- else {
97
- const escaped = String(param).replace(/'/g, "''");
98
- query = query.replace('?', `'${escaped}'`);
99
- }
100
- }
98
+ return Number.isFinite(param) ? String(param) : '0';
99
+ const escaped = String(param).replace(/'/g, "''");
100
+ return `'${escaped}'`;
101
+ });
101
102
  try {
102
103
  const result = (0, child_process_1.execFileSync)('sqlite3', ['-json', '-readonly', this.dbPath, query], {
103
104
  encoding: 'utf-8',
@@ -151,6 +151,7 @@ export interface SessionProviderBase {
151
151
  /**
152
152
  * Original simplified session provider interface.
153
153
  * Maintained for backward compatibility with existing CLI and shared code.
154
+ * @deprecated Use SessionProviderBase for new integrations.
154
155
  */
155
156
  export interface SessionProvider {
156
157
  readonly id: ProviderId;
@@ -2,9 +2,10 @@
2
2
  * Reader for persisted decisions.
3
3
  */
4
4
  import type { DecisionEntry } from '../types/decisionLog';
5
+ import type { ProjectIdentity } from '../paths';
5
6
  export interface ReadDecisionsOptions {
6
7
  search?: string;
7
8
  file?: string;
8
9
  limit?: number;
9
10
  }
10
- export declare function readDecisions(slug: string, opts?: ReadDecisionsOptions): Promise<DecisionEntry[]>;
11
+ export declare function readDecisions(project: string | ProjectIdentity, opts?: ReadDecisionsOptions): Promise<DecisionEntry[]>;
@@ -4,11 +4,9 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readDecisions = readDecisions;
7
- const paths_1 = require("../paths");
8
7
  const helpers_1 = require("./helpers");
9
- async function readDecisions(slug, opts) {
10
- const filePath = (0, paths_1.getProjectDataPath)(slug, 'decisions');
11
- const store = await (0, helpers_1.readJsonStore)(filePath);
8
+ async function readDecisions(project, opts) {
9
+ const store = await (0, helpers_1.readProjectJsonStore)(project, 'decisions');
12
10
  if (!store)
13
11
  return [];
14
12
  let decisions = Object.values(store.decisions);
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * Reader for session handoff documents.
3
3
  */
4
- export declare function readLatestHandoff(slug: string): Promise<string | null>;
4
+ import { type ProjectIdentity } from '../paths';
5
+ export declare function readLatestHandoff(project: string | ProjectIdentity): Promise<string | null>;
@@ -39,13 +39,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.readLatestHandoff = readLatestHandoff;
40
40
  const fs = __importStar(require("fs"));
41
41
  const paths_1 = require("../paths");
42
- async function readLatestHandoff(slug) {
43
- const filePath = (0, paths_1.getProjectDataPath)(slug, 'handoffs').replace('.json', '-latest.md');
44
- try {
45
- const content = await fs.promises.readFile(filePath, 'utf-8');
46
- return content.trim() || null;
47
- }
48
- catch {
49
- return null;
42
+ async function readLatestHandoff(project) {
43
+ const candidates = typeof project === 'string' ? [project] : project.candidates;
44
+ for (const slug of candidates) {
45
+ const filePath = (0, paths_1.getProjectDataPath)(slug, 'handoffs').replace('.json', '-latest.md');
46
+ try {
47
+ const content = await fs.promises.readFile(filePath, 'utf-8');
48
+ if (content.trim())
49
+ return content.trim();
50
+ }
51
+ catch {
52
+ // Try the legacy candidate.
53
+ }
50
54
  }
55
+ return null;
51
56
  }
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * Shared reader helpers.
3
3
  */
4
+ import { type ProjectIdentity } from '../paths';
4
5
  /**
5
6
  * Reads and parses a JSON store file. Returns null if file missing or malformed.
6
7
  */
7
8
  export declare function readJsonStore<T>(filePath: string): Promise<T | null>;
9
+ /** Reads the canonical project store, falling back to the legacy symlink slug. */
10
+ export declare function readProjectJsonStore<T>(project: string | ProjectIdentity, subdomain: string): Promise<T | null>;
@@ -37,7 +37,9 @@ var __importStar = (this && this.__importStar) || (function () {
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.readJsonStore = readJsonStore;
40
+ exports.readProjectJsonStore = readProjectJsonStore;
40
41
  const fs = __importStar(require("fs"));
42
+ const paths_1 = require("../paths");
41
43
  /**
42
44
  * Reads and parses a JSON store file. Returns null if file missing or malformed.
43
45
  */
@@ -50,3 +52,13 @@ async function readJsonStore(filePath) {
50
52
  return null;
51
53
  }
52
54
  }
55
+ /** Reads the canonical project store, falling back to the legacy symlink slug. */
56
+ async function readProjectJsonStore(project, subdomain) {
57
+ const candidates = typeof project === 'string' ? [project] : project.candidates;
58
+ for (const slug of candidates) {
59
+ const store = await readJsonStore((0, paths_1.getProjectDataPath)(slug, subdomain));
60
+ if (store)
61
+ return store;
62
+ }
63
+ return null;
64
+ }
@@ -2,9 +2,10 @@
2
2
  * Reader for knowledge notes.
3
3
  */
4
4
  import type { KnowledgeNote, KnowledgeNoteType, KnowledgeNoteStatus } from '../types/knowledgeNote';
5
+ import type { ProjectIdentity } from '../paths';
5
6
  export interface ReadNotesOptions {
6
7
  file?: string;
7
8
  type?: KnowledgeNoteType;
8
9
  status?: KnowledgeNoteStatus;
9
10
  }
10
- export declare function readNotes(slug: string, opts?: ReadNotesOptions): Promise<KnowledgeNote[]>;
11
+ export declare function readNotes(project: string | ProjectIdentity, opts?: ReadNotesOptions): Promise<KnowledgeNote[]>;
@@ -4,11 +4,9 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readNotes = readNotes;
7
- const paths_1 = require("../paths");
8
7
  const helpers_1 = require("./helpers");
9
- async function readNotes(slug, opts) {
10
- const filePath = (0, paths_1.getProjectDataPath)(slug, 'knowledge-notes');
11
- const store = await (0, helpers_1.readJsonStore)(filePath);
8
+ async function readNotes(project, opts) {
9
+ const store = await (0, helpers_1.readProjectJsonStore)(project, 'knowledge-notes');
12
10
  if (!store)
13
11
  return [];
14
12
  let notes = [];
@@ -53,7 +53,7 @@ async function readPlans(slug, opts) {
53
53
  const store = await (0, helpers_1.readJsonStore)(filePath);
54
54
  if (!store)
55
55
  return [];
56
- let plans = [...store.plans];
56
+ let plans = Array.isArray(store.plans) ? [...store.plans] : [];
57
57
  const status = opts?.status ?? 'all';
58
58
  if (status !== 'all') {
59
59
  plans = plans.filter((p) => p.status === status);
@@ -2,7 +2,8 @@
2
2
  * Reader for persisted tasks.
3
3
  */
4
4
  import type { PersistedTask } from '../types/taskPersistence';
5
+ import type { ProjectIdentity } from '../paths';
5
6
  export interface ReadTasksOptions {
6
7
  status?: 'pending' | 'completed' | 'all';
7
8
  }
8
- export declare function readTasks(slug: string, opts?: ReadTasksOptions): Promise<PersistedTask[]>;
9
+ export declare function readTasks(project: string | ProjectIdentity, opts?: ReadTasksOptions): Promise<PersistedTask[]>;
@@ -4,11 +4,9 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readTasks = readTasks;
7
- const paths_1 = require("../paths");
8
7
  const helpers_1 = require("./helpers");
9
- async function readTasks(slug, opts) {
10
- const filePath = (0, paths_1.getProjectDataPath)(slug, 'tasks');
11
- const store = await (0, helpers_1.readJsonStore)(filePath);
8
+ async function readTasks(project, opts) {
9
+ const store = await (0, helpers_1.readProjectJsonStore)(project, 'tasks');
12
10
  if (!store)
13
11
  return [];
14
12
  let tasks = Object.values(store.tasks);
@@ -12,6 +12,8 @@
12
12
  */
13
13
  export { messageUsageSchema, sessionMessageSchema, sessionEventSchema, permissionModeSchema, extractSessionEvents, } from './sessionEvent';
14
14
  export type { MessageUsage, SessionMessage, SessionEvent, PermissionMode, } from '../types/sessionEvent';
15
+ export { observationProvenanceV1Schema, observedAgentSessionV1Schema, observedValueV1Schema, pendingUserRequestV1Schema, providerCapabilitiesV1Schema, providerSessionAdapterV1Schema, sessionEvidenceRefV1Schema, } from './observedSessionV1';
16
+ export type { ObservationProvenanceV1, ObservedAgentSessionV1, ObservedValueV1, PendingUserRequestV1, ProviderCapabilitiesV1, ProviderSessionAdapterV1, SessionEvidenceRefV1, } from '../types/observedSessionV1';
15
17
  export { quotaWindowSchema, quotaStateSchema, quotaFailureKindSchema, quotaProviderIdSchema, quotaSourceSchema, codexResetCreditSchema, codexResetCreditsSnapshotSchema, peakHoursStateSchema, quotaFailureDescriptorSchema, runtimeQuotaProviderSchema, providerQuotaStateSchema, claudeProviderQuotaStateSchema, codexProviderQuotaStateSchema, zaiProviderQuotaStateSchema, providerQuotaMapSchema, } from './quota';
16
18
  export type { CodexResetCredit, CodexResetCreditsSnapshot, QuotaWindow, QuotaState, } from '../quota';
17
19
  export type { PeakHoursState } from '../peakHours';
@@ -12,13 +12,22 @@
12
12
  * subpath is self-sufficient for boundary-validation modules.
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.assistantTurnToolRefSchema = exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.listAllAccountsResultSchema = exports.savedAccountProfileSchema = exports.accountEntrySchema = exports.accountLoginStatusSchema = exports.beginAccountLoginResultSchema = exports.accountManagerResultSchema = exports.accountProviderIdSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = void 0;
15
+ exports.assistantTurnToolGroupStepSchema = exports.assistantTurnTimelineItemSchema = exports.assistantTurnSubagentStatusSchema = exports.assistantTurnSubagentSchema = exports.assistantTurnReasoningTimelineItemSchema = exports.assistantTurnProjectionSchema = exports.assistantTurnProcessStepSchema = exports.assistantTurnProcessSchema = exports.assistantTurnNarrationStepSchema = exports.assistantTurnEventTypeSchema = exports.assistantTurnEventSchema = exports.listAllAccountsResultSchema = exports.savedAccountProfileSchema = exports.accountEntrySchema = exports.accountLoginStatusSchema = exports.beginAccountLoginResultSchema = exports.accountManagerResultSchema = exports.accountProviderIdSchema = exports.activeAccountStatusSchema = exports.activeProviderAccountStatusSchema = exports.quotaHistoryDailyBucketSchema = exports.quotaHistorySampleSchema = exports.quotaHistoryRuntimeProviderSchema = exports.providerQuotaMapSchema = exports.zaiProviderQuotaStateSchema = exports.codexProviderQuotaStateSchema = exports.claudeProviderQuotaStateSchema = exports.providerQuotaStateSchema = exports.runtimeQuotaProviderSchema = exports.quotaFailureDescriptorSchema = exports.peakHoursStateSchema = exports.codexResetCreditsSnapshotSchema = exports.codexResetCreditSchema = exports.quotaSourceSchema = exports.quotaProviderIdSchema = exports.quotaFailureKindSchema = exports.quotaStateSchema = exports.quotaWindowSchema = exports.sessionEvidenceRefV1Schema = exports.providerSessionAdapterV1Schema = exports.providerCapabilitiesV1Schema = exports.pendingUserRequestV1Schema = exports.observedValueV1Schema = exports.observedAgentSessionV1Schema = exports.observationProvenanceV1Schema = exports.extractSessionEvents = exports.permissionModeSchema = exports.sessionEventSchema = exports.sessionMessageSchema = exports.messageUsageSchema = void 0;
16
+ exports.assistantTurnToolRefSchema = void 0;
16
17
  var sessionEvent_1 = require("./sessionEvent");
17
18
  Object.defineProperty(exports, "messageUsageSchema", { enumerable: true, get: function () { return sessionEvent_1.messageUsageSchema; } });
18
19
  Object.defineProperty(exports, "sessionMessageSchema", { enumerable: true, get: function () { return sessionEvent_1.sessionMessageSchema; } });
19
20
  Object.defineProperty(exports, "sessionEventSchema", { enumerable: true, get: function () { return sessionEvent_1.sessionEventSchema; } });
20
21
  Object.defineProperty(exports, "permissionModeSchema", { enumerable: true, get: function () { return sessionEvent_1.permissionModeSchema; } });
21
22
  Object.defineProperty(exports, "extractSessionEvents", { enumerable: true, get: function () { return sessionEvent_1.extractSessionEvents; } });
23
+ var observedSessionV1_1 = require("./observedSessionV1");
24
+ Object.defineProperty(exports, "observationProvenanceV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.observationProvenanceV1Schema; } });
25
+ Object.defineProperty(exports, "observedAgentSessionV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.observedAgentSessionV1Schema; } });
26
+ Object.defineProperty(exports, "observedValueV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.observedValueV1Schema; } });
27
+ Object.defineProperty(exports, "pendingUserRequestV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.pendingUserRequestV1Schema; } });
28
+ Object.defineProperty(exports, "providerCapabilitiesV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.providerCapabilitiesV1Schema; } });
29
+ Object.defineProperty(exports, "providerSessionAdapterV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.providerSessionAdapterV1Schema; } });
30
+ Object.defineProperty(exports, "sessionEvidenceRefV1Schema", { enumerable: true, get: function () { return observedSessionV1_1.sessionEvidenceRefV1Schema; } });
22
31
  var quota_1 = require("./quota");
23
32
  Object.defineProperty(exports, "quotaWindowSchema", { enumerable: true, get: function () { return quota_1.quotaWindowSchema; } });
24
33
  Object.defineProperty(exports, "quotaStateSchema", { enumerable: true, get: function () { return quota_1.quotaStateSchema; } });