@pcircle/footprint 1.5.0 → 1.7.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 (249) hide show
  1. package/README.md +301 -132
  2. package/SKILL.md +72 -28
  3. package/bin/footprint.js +16 -0
  4. package/dist/src/adapters/claude.d.ts +2 -0
  5. package/dist/src/adapters/claude.d.ts.map +1 -0
  6. package/dist/src/adapters/claude.js +7 -0
  7. package/dist/src/adapters/claude.js.map +1 -0
  8. package/dist/src/adapters/codex.d.ts +2 -0
  9. package/dist/src/adapters/codex.d.ts.map +1 -0
  10. package/dist/src/adapters/codex.js +7 -0
  11. package/dist/src/adapters/codex.js.map +1 -0
  12. package/dist/src/adapters/gemini.d.ts +2 -0
  13. package/dist/src/adapters/gemini.d.ts.map +1 -0
  14. package/dist/src/adapters/gemini.js +7 -0
  15. package/dist/src/adapters/gemini.js.map +1 -0
  16. package/dist/src/adapters/index.d.ts +5 -0
  17. package/dist/src/adapters/index.d.ts.map +1 -0
  18. package/dist/src/adapters/index.js +12 -0
  19. package/dist/src/adapters/index.js.map +1 -0
  20. package/dist/src/adapters/structured-prefix.d.ts +10 -0
  21. package/dist/src/adapters/structured-prefix.d.ts.map +1 -0
  22. package/dist/src/adapters/structured-prefix.js +59 -0
  23. package/dist/src/adapters/structured-prefix.js.map +1 -0
  24. package/dist/src/adapters/types.d.ts +32 -0
  25. package/dist/src/adapters/types.d.ts.map +1 -0
  26. package/dist/src/adapters/types.js +2 -0
  27. package/dist/src/adapters/types.js.map +1 -0
  28. package/dist/src/cli/context-flow.d.ts +92 -0
  29. package/dist/src/cli/context-flow.d.ts.map +1 -0
  30. package/dist/src/cli/context-flow.js +724 -0
  31. package/dist/src/cli/context-flow.js.map +1 -0
  32. package/dist/src/cli/history-display.d.ts +27 -0
  33. package/dist/src/cli/history-display.d.ts.map +1 -0
  34. package/dist/src/cli/history-display.js +167 -0
  35. package/dist/src/cli/history-display.js.map +1 -0
  36. package/dist/src/cli/index.js +924 -0
  37. package/dist/src/cli/index.js.map +1 -1
  38. package/dist/src/cli/launch-spec.d.ts +31 -0
  39. package/dist/src/cli/launch-spec.d.ts.map +1 -0
  40. package/dist/src/cli/launch-spec.js +182 -0
  41. package/dist/src/cli/launch-spec.js.map +1 -0
  42. package/dist/src/cli/live-demo.d.ts +34 -0
  43. package/dist/src/cli/live-demo.d.ts.map +1 -0
  44. package/dist/src/cli/live-demo.js +254 -0
  45. package/dist/src/cli/live-demo.js.map +1 -0
  46. package/dist/src/cli/pty-transcript.d.ts +34 -0
  47. package/dist/src/cli/pty-transcript.d.ts.map +1 -0
  48. package/dist/src/cli/pty-transcript.js +174 -0
  49. package/dist/src/cli/pty-transcript.js.map +1 -0
  50. package/dist/src/cli/session-display.d.ts +74 -0
  51. package/dist/src/cli/session-display.d.ts.map +1 -0
  52. package/dist/src/cli/session-display.js +922 -0
  53. package/dist/src/cli/session-display.js.map +1 -0
  54. package/dist/src/cli/session-execution.d.ts +55 -0
  55. package/dist/src/cli/session-execution.d.ts.map +1 -0
  56. package/dist/src/cli/session-execution.js +817 -0
  57. package/dist/src/cli/session-execution.js.map +1 -0
  58. package/dist/src/cli/session-runtime.d.ts +5 -0
  59. package/dist/src/cli/session-runtime.d.ts.map +1 -0
  60. package/dist/src/cli/session-runtime.js +11 -0
  61. package/dist/src/cli/session-runtime.js.map +1 -0
  62. package/dist/src/cli/setup.d.ts.map +1 -1
  63. package/dist/src/cli/setup.js +2 -0
  64. package/dist/src/cli/setup.js.map +1 -1
  65. package/dist/src/index.d.ts +4 -0
  66. package/dist/src/index.d.ts.map +1 -1
  67. package/dist/src/index.js +148 -7
  68. package/dist/src/index.js.map +1 -1
  69. package/dist/src/ingestion/deterministic.d.ts +3 -0
  70. package/dist/src/ingestion/deterministic.d.ts.map +1 -0
  71. package/dist/src/ingestion/deterministic.js +862 -0
  72. package/dist/src/ingestion/deterministic.js.map +1 -0
  73. package/dist/src/ingestion/index.d.ts +5 -0
  74. package/dist/src/ingestion/index.d.ts.map +1 -0
  75. package/dist/src/ingestion/index.js +27 -0
  76. package/dist/src/ingestion/index.js.map +1 -0
  77. package/dist/src/ingestion/semantic.d.ts +6 -0
  78. package/dist/src/ingestion/semantic.d.ts.map +1 -0
  79. package/dist/src/ingestion/semantic.js +627 -0
  80. package/dist/src/ingestion/semantic.js.map +1 -0
  81. package/dist/src/ingestion/types.d.ts +10 -0
  82. package/dist/src/ingestion/types.d.ts.map +1 -0
  83. package/dist/src/ingestion/types.js +2 -0
  84. package/dist/src/ingestion/types.js.map +1 -0
  85. package/dist/src/lib/context-memory.d.ts +140 -0
  86. package/dist/src/lib/context-memory.d.ts.map +1 -0
  87. package/dist/src/lib/context-memory.js +974 -0
  88. package/dist/src/lib/context-memory.js.map +1 -0
  89. package/dist/src/lib/history-handoff.d.ts +43 -0
  90. package/dist/src/lib/history-handoff.d.ts.map +1 -0
  91. package/dist/src/lib/history-handoff.js +179 -0
  92. package/dist/src/lib/history-handoff.js.map +1 -0
  93. package/dist/src/lib/observability.d.ts +3 -0
  94. package/dist/src/lib/observability.d.ts.map +1 -0
  95. package/dist/src/lib/observability.js +63 -0
  96. package/dist/src/lib/observability.js.map +1 -0
  97. package/dist/src/lib/session-artifacts.d.ts +51 -0
  98. package/dist/src/lib/session-artifacts.d.ts.map +1 -0
  99. package/dist/src/lib/session-artifacts.js +132 -0
  100. package/dist/src/lib/session-artifacts.js.map +1 -0
  101. package/dist/src/lib/session-filters.d.ts +11 -0
  102. package/dist/src/lib/session-filters.d.ts.map +1 -0
  103. package/dist/src/lib/session-filters.js +16 -0
  104. package/dist/src/lib/session-filters.js.map +1 -0
  105. package/dist/src/lib/session-history.d.ts +50 -0
  106. package/dist/src/lib/session-history.d.ts.map +1 -0
  107. package/dist/src/lib/session-history.js +73 -0
  108. package/dist/src/lib/session-history.js.map +1 -0
  109. package/dist/src/lib/session-trends.d.ts +129 -0
  110. package/dist/src/lib/session-trends.d.ts.map +1 -0
  111. package/dist/src/lib/session-trends.js +361 -0
  112. package/dist/src/lib/session-trends.js.map +1 -0
  113. package/dist/src/lib/storage/database.d.ts +212 -1
  114. package/dist/src/lib/storage/database.d.ts.map +1 -1
  115. package/dist/src/lib/storage/database.js +1694 -114
  116. package/dist/src/lib/storage/database.js.map +1 -1
  117. package/dist/src/lib/storage/export-sessions.d.ts +33 -0
  118. package/dist/src/lib/storage/export-sessions.d.ts.map +1 -0
  119. package/dist/src/lib/storage/export-sessions.js +525 -0
  120. package/dist/src/lib/storage/export-sessions.js.map +1 -0
  121. package/dist/src/lib/storage/index.d.ts +7 -6
  122. package/dist/src/lib/storage/index.d.ts.map +1 -1
  123. package/dist/src/lib/storage/index.js +6 -5
  124. package/dist/src/lib/storage/index.js.map +1 -1
  125. package/dist/src/lib/storage/schema.d.ts +6 -1
  126. package/dist/src/lib/storage/schema.d.ts.map +1 -1
  127. package/dist/src/lib/storage/schema.js +337 -2
  128. package/dist/src/lib/storage/schema.js.map +1 -1
  129. package/dist/src/lib/storage/types.d.ts +122 -0
  130. package/dist/src/lib/storage/types.d.ts.map +1 -1
  131. package/dist/src/prompts/skill-prompt.d.ts.map +1 -1
  132. package/dist/src/prompts/skill-prompt.js +13 -0
  133. package/dist/src/prompts/skill-prompt.js.map +1 -1
  134. package/dist/src/tools/confirm-context-link.d.ts +62 -0
  135. package/dist/src/tools/confirm-context-link.d.ts.map +1 -0
  136. package/dist/src/tools/confirm-context-link.js +36 -0
  137. package/dist/src/tools/confirm-context-link.js.map +1 -0
  138. package/dist/src/tools/context-schemas.d.ts +694 -0
  139. package/dist/src/tools/context-schemas.d.ts.map +1 -0
  140. package/dist/src/tools/context-schemas.js +171 -0
  141. package/dist/src/tools/context-schemas.js.map +1 -0
  142. package/dist/src/tools/export-sessions.d.ts +111 -0
  143. package/dist/src/tools/export-sessions.d.ts.map +1 -0
  144. package/dist/src/tools/export-sessions.js +136 -0
  145. package/dist/src/tools/export-sessions.js.map +1 -0
  146. package/dist/src/tools/get-context.d.ts +208 -0
  147. package/dist/src/tools/get-context.d.ts.map +1 -0
  148. package/dist/src/tools/get-context.js +27 -0
  149. package/dist/src/tools/get-context.js.map +1 -0
  150. package/dist/src/tools/get-history-handoff.d.ts +109 -0
  151. package/dist/src/tools/get-history-handoff.d.ts.map +1 -0
  152. package/dist/src/tools/get-history-handoff.js +85 -0
  153. package/dist/src/tools/get-history-handoff.js.map +1 -0
  154. package/dist/src/tools/get-history-trends.d.ts +155 -0
  155. package/dist/src/tools/get-history-trends.d.ts.map +1 -0
  156. package/dist/src/tools/get-history-trends.js +123 -0
  157. package/dist/src/tools/get-history-trends.js.map +1 -0
  158. package/dist/src/tools/get-session-artifacts.d.ts +151 -0
  159. package/dist/src/tools/get-session-artifacts.d.ts.map +1 -0
  160. package/dist/src/tools/get-session-artifacts.js +184 -0
  161. package/dist/src/tools/get-session-artifacts.js.map +1 -0
  162. package/dist/src/tools/get-session-decisions.d.ts +69 -0
  163. package/dist/src/tools/get-session-decisions.d.ts.map +1 -0
  164. package/dist/src/tools/get-session-decisions.js +99 -0
  165. package/dist/src/tools/get-session-decisions.js.map +1 -0
  166. package/dist/src/tools/get-session-messages.d.ts +55 -0
  167. package/dist/src/tools/get-session-messages.d.ts.map +1 -0
  168. package/dist/src/tools/get-session-messages.js +89 -0
  169. package/dist/src/tools/get-session-messages.js.map +1 -0
  170. package/dist/src/tools/get-session-narrative.d.ts +72 -0
  171. package/dist/src/tools/get-session-narrative.d.ts.map +1 -0
  172. package/dist/src/tools/get-session-narrative.js +106 -0
  173. package/dist/src/tools/get-session-narrative.js.map +1 -0
  174. package/dist/src/tools/get-session-timeline.d.ts +55 -0
  175. package/dist/src/tools/get-session-timeline.d.ts.map +1 -0
  176. package/dist/src/tools/get-session-timeline.js +93 -0
  177. package/dist/src/tools/get-session-timeline.js.map +1 -0
  178. package/dist/src/tools/get-session-trends.d.ts +108 -0
  179. package/dist/src/tools/get-session-trends.d.ts.map +1 -0
  180. package/dist/src/tools/get-session-trends.js +130 -0
  181. package/dist/src/tools/get-session-trends.js.map +1 -0
  182. package/dist/src/tools/get-session.d.ts +251 -0
  183. package/dist/src/tools/get-session.d.ts.map +1 -0
  184. package/dist/src/tools/get-session.js +290 -0
  185. package/dist/src/tools/get-session.js.map +1 -0
  186. package/dist/src/tools/index.d.ts +22 -0
  187. package/dist/src/tools/index.d.ts.map +1 -1
  188. package/dist/src/tools/index.js +22 -0
  189. package/dist/src/tools/index.js.map +1 -1
  190. package/dist/src/tools/list-contexts.d.ts +50 -0
  191. package/dist/src/tools/list-contexts.d.ts.map +1 -0
  192. package/dist/src/tools/list-contexts.js +28 -0
  193. package/dist/src/tools/list-contexts.js.map +1 -0
  194. package/dist/src/tools/list-sessions.d.ts +86 -0
  195. package/dist/src/tools/list-sessions.d.ts.map +1 -0
  196. package/dist/src/tools/list-sessions.js +97 -0
  197. package/dist/src/tools/list-sessions.js.map +1 -0
  198. package/dist/src/tools/merge-contexts.d.ts +58 -0
  199. package/dist/src/tools/merge-contexts.d.ts.map +1 -0
  200. package/dist/src/tools/merge-contexts.js +27 -0
  201. package/dist/src/tools/merge-contexts.js.map +1 -0
  202. package/dist/src/tools/move-session-context.d.ts +62 -0
  203. package/dist/src/tools/move-session-context.d.ts.map +1 -0
  204. package/dist/src/tools/move-session-context.js +33 -0
  205. package/dist/src/tools/move-session-context.js.map +1 -0
  206. package/dist/src/tools/reingest-session.d.ts +31 -0
  207. package/dist/src/tools/reingest-session.d.ts.map +1 -0
  208. package/dist/src/tools/reingest-session.js +43 -0
  209. package/dist/src/tools/reingest-session.js.map +1 -0
  210. package/dist/src/tools/reject-context-link.d.ts +58 -0
  211. package/dist/src/tools/reject-context-link.d.ts.map +1 -0
  212. package/dist/src/tools/reject-context-link.js +26 -0
  213. package/dist/src/tools/reject-context-link.js.map +1 -0
  214. package/dist/src/tools/resolve-context.d.ts +287 -0
  215. package/dist/src/tools/resolve-context.d.ts.map +1 -0
  216. package/dist/src/tools/resolve-context.js +35 -0
  217. package/dist/src/tools/resolve-context.js.map +1 -0
  218. package/dist/src/tools/search-history.d.ts +86 -0
  219. package/dist/src/tools/search-history.d.ts.map +1 -0
  220. package/dist/src/tools/search-history.js +103 -0
  221. package/dist/src/tools/search-history.js.map +1 -0
  222. package/dist/src/tools/session-ui-metadata.d.ts +15 -0
  223. package/dist/src/tools/session-ui-metadata.d.ts.map +1 -0
  224. package/dist/src/tools/session-ui-metadata.js +15 -0
  225. package/dist/src/tools/session-ui-metadata.js.map +1 -0
  226. package/dist/src/tools/set-active-context.d.ts +58 -0
  227. package/dist/src/tools/set-active-context.d.ts.map +1 -0
  228. package/dist/src/tools/set-active-context.js +26 -0
  229. package/dist/src/tools/set-active-context.js.map +1 -0
  230. package/dist/src/tools/split-context.d.ts +62 -0
  231. package/dist/src/tools/split-context.d.ts.map +1 -0
  232. package/dist/src/tools/split-context.js +36 -0
  233. package/dist/src/tools/split-context.js.map +1 -0
  234. package/dist/src/tools/verify-footprint.js +1 -1
  235. package/dist/src/tools/verify-footprint.js.map +1 -1
  236. package/dist/src/types.d.ts +2 -0
  237. package/dist/src/types.d.ts.map +1 -1
  238. package/dist/src/ui/register.d.ts +6 -1
  239. package/dist/src/ui/register.d.ts.map +1 -1
  240. package/dist/src/ui/register.js +60 -16
  241. package/dist/src/ui/register.js.map +1 -1
  242. package/dist/ui/dashboard.html +239 -868
  243. package/dist/ui/detail.html +107 -248
  244. package/dist/ui/export.html +115 -298
  245. package/dist/ui/session-dashboard-live.html +264 -0
  246. package/dist/ui/session-dashboard.html +329 -0
  247. package/dist/ui/session-detail-live.html +336 -0
  248. package/dist/ui/session-detail.html +355 -0
  249. package/package.json +34 -9
@@ -0,0 +1,151 @@
1
+ import * as z from "zod";
2
+ import type { ArtifactType, EvidenceDatabase } from "../lib/storage/index.js";
3
+ export declare const getSessionArtifactsSchema: {
4
+ inputSchema: {
5
+ id: z.ZodString;
6
+ artifactType: z.ZodOptional<z.ZodEnum<{
7
+ "file-change": "file-change";
8
+ "command-output": "command-output";
9
+ "test-result": "test-result";
10
+ "git-commit": "git-commit";
11
+ }>>;
12
+ limit: z.ZodOptional<z.ZodNumber>;
13
+ offset: z.ZodOptional<z.ZodNumber>;
14
+ };
15
+ outputSchema: {
16
+ sessionId: z.ZodString;
17
+ artifactSummary: z.ZodObject<{
18
+ total: z.ZodNumber;
19
+ byType: z.ZodObject<{
20
+ fileChange: z.ZodNumber;
21
+ commandOutput: z.ZodNumber;
22
+ testResult: z.ZodNumber;
23
+ gitCommit: z.ZodNumber;
24
+ }, z.core.$strip>;
25
+ }, z.core.$strip>;
26
+ page: z.ZodObject<{
27
+ total: z.ZodNumber;
28
+ offset: z.ZodNumber;
29
+ limit: z.ZodNumber;
30
+ returned: z.ZodNumber;
31
+ hasMore: z.ZodBoolean;
32
+ nextOffset: z.ZodNullable<z.ZodNumber>;
33
+ }, z.core.$strip>;
34
+ artifacts: z.ZodArray<z.ZodObject<{
35
+ id: z.ZodString;
36
+ sessionId: z.ZodString;
37
+ eventId: z.ZodNullable<z.ZodString>;
38
+ artifactType: z.ZodEnum<{
39
+ "file-change": "file-change";
40
+ "command-output": "command-output";
41
+ "test-result": "test-result";
42
+ "git-commit": "git-commit";
43
+ }>;
44
+ path: z.ZodNullable<z.ZodString>;
45
+ createdAt: z.ZodString;
46
+ summary: z.ZodString;
47
+ category: z.ZodNullable<z.ZodString>;
48
+ status: z.ZodNullable<z.ZodString>;
49
+ outcome: z.ZodNullable<z.ZodString>;
50
+ intent: z.ZodNullable<z.ZodString>;
51
+ commandFamily: z.ZodNullable<z.ZodString>;
52
+ command: z.ZodNullable<z.ZodString>;
53
+ args: z.ZodArray<z.ZodString>;
54
+ framework: z.ZodNullable<z.ZodString>;
55
+ packageManager: z.ZodNullable<z.ZodString>;
56
+ scriptName: z.ZodNullable<z.ZodString>;
57
+ dependencyAction: z.ZodNullable<z.ZodString>;
58
+ dependencyNames: z.ZodArray<z.ZodString>;
59
+ failureSignatureKey: z.ZodNullable<z.ZodString>;
60
+ failureSignatureLabel: z.ZodNullable<z.ZodString>;
61
+ errorCode: z.ZodNullable<z.ZodString>;
62
+ lintRuleId: z.ZodNullable<z.ZodString>;
63
+ testSuite: z.ZodNullable<z.ZodString>;
64
+ testCase: z.ZodNullable<z.ZodString>;
65
+ issueKey: z.ZodNullable<z.ZodString>;
66
+ issueLabel: z.ZodNullable<z.ZodString>;
67
+ issueFamilyKey: z.ZodNullable<z.ZodString>;
68
+ issueFamilyLabel: z.ZodNullable<z.ZodString>;
69
+ pathCategory: z.ZodNullable<z.ZodString>;
70
+ changeScope: z.ZodNullable<z.ZodString>;
71
+ manifestKind: z.ZodNullable<z.ZodString>;
72
+ previousHead: z.ZodNullable<z.ZodString>;
73
+ currentHead: z.ZodNullable<z.ZodString>;
74
+ sourceRefs: z.ZodArray<z.ZodObject<{
75
+ type: z.ZodEnum<{
76
+ message: "message";
77
+ event: "event";
78
+ artifact: "artifact";
79
+ }>;
80
+ id: z.ZodString;
81
+ }, z.core.$strip>>;
82
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
83
+ }, z.core.$strip>>;
84
+ };
85
+ };
86
+ export declare const getSessionArtifactsMetadata: {
87
+ _meta: {
88
+ readonly ui: {
89
+ readonly resourceUri: "ui://footprint/session-detail.html";
90
+ };
91
+ };
92
+ title: string;
93
+ description: string;
94
+ };
95
+ export declare function createGetSessionArtifactsHandler(db: EvidenceDatabase): (params: {
96
+ id: string;
97
+ artifactType?: ArtifactType;
98
+ limit?: number;
99
+ offset?: number;
100
+ }) => Promise<import("../lib/tool-response.js").ToolResponse<{
101
+ sessionId: string;
102
+ artifactSummary: {
103
+ total: number;
104
+ byType: {
105
+ fileChange: number;
106
+ commandOutput: number;
107
+ testResult: number;
108
+ gitCommit: number;
109
+ };
110
+ };
111
+ page: import("../lib/session-history.js").PageInfo;
112
+ artifacts: {
113
+ id: string;
114
+ sessionId: string;
115
+ eventId: string | null;
116
+ artifactType: ArtifactType;
117
+ path: string | null;
118
+ createdAt: string;
119
+ summary: string;
120
+ category: string | null;
121
+ status: string | null;
122
+ outcome: string | null;
123
+ intent: string | null;
124
+ commandFamily: string | null;
125
+ command: string | null;
126
+ args: string[];
127
+ framework: string | null;
128
+ packageManager: string | null;
129
+ scriptName: string | null;
130
+ dependencyAction: string | null;
131
+ dependencyNames: string[];
132
+ failureSignatureKey: string | null;
133
+ failureSignatureLabel: string | null;
134
+ errorCode: string | null;
135
+ lintRuleId: string | null;
136
+ testSuite: string | null;
137
+ testCase: string | null;
138
+ issueKey: string | null;
139
+ issueLabel: string | null;
140
+ issueFamilyKey: string | null;
141
+ issueFamilyLabel: string | null;
142
+ pathCategory: string | null;
143
+ changeScope: string | null;
144
+ manifestKind: string | null;
145
+ previousHead: string | null;
146
+ currentHead: string | null;
147
+ sourceRefs: import("../lib/session-artifacts.js").ArtifactSourceRef[];
148
+ details: Record<string, unknown>;
149
+ }[];
150
+ }>>;
151
+ //# sourceMappingURL=get-session-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-artifacts.d.ts","sourceRoot":"","sources":["../../../src/tools/get-session-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AASzB,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkB9E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFrC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;CAKvC,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,gBAAgB;QAK3D,MAAM;mBACK,YAAY;YACnB,MAAM;aACL,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8FpB"}
@@ -0,0 +1,184 @@
1
+ import * as z from "zod";
2
+ import { buildPageInfo, DEFAULT_SESSION_DETAIL_PAGE_LIMIT, MAX_SESSION_DETAIL_PAGE_LIMIT, } from "../lib/session-history.js";
3
+ import { parseArtifactMetadata } from "../lib/session-artifacts.js";
4
+ import { formatSuccessResponse } from "../lib/tool-response.js";
5
+ import { wrapToolHandler } from "../lib/tool-wrapper.js";
6
+ import { sessionDetailUiMetadata } from "./session-ui-metadata.js";
7
+ const artifactTypeEnum = z.enum([
8
+ "file-change",
9
+ "command-output",
10
+ "test-result",
11
+ "git-commit",
12
+ ]);
13
+ const pageInfoSchema = z.object({
14
+ total: z.number(),
15
+ offset: z.number(),
16
+ limit: z.number(),
17
+ returned: z.number(),
18
+ hasMore: z.boolean(),
19
+ nextOffset: z.number().nullable(),
20
+ });
21
+ export const getSessionArtifactsSchema = {
22
+ inputSchema: {
23
+ id: z.string().describe("ID of the recorded session"),
24
+ artifactType: artifactTypeEnum
25
+ .optional()
26
+ .describe("Optional deterministic artifact type filter"),
27
+ limit: z
28
+ .number()
29
+ .int()
30
+ .positive()
31
+ .max(MAX_SESSION_DETAIL_PAGE_LIMIT)
32
+ .optional()
33
+ .describe(`Optional page size for the artifact slice. Defaults to ${DEFAULT_SESSION_DETAIL_PAGE_LIMIT}.`),
34
+ offset: z
35
+ .number()
36
+ .int()
37
+ .min(0)
38
+ .optional()
39
+ .describe("Optional offset for the artifact slice."),
40
+ },
41
+ outputSchema: {
42
+ sessionId: z.string(),
43
+ artifactSummary: z.object({
44
+ total: z.number(),
45
+ byType: z.object({
46
+ fileChange: z.number(),
47
+ commandOutput: z.number(),
48
+ testResult: z.number(),
49
+ gitCommit: z.number(),
50
+ }),
51
+ }),
52
+ page: pageInfoSchema,
53
+ artifacts: z.array(z.object({
54
+ id: z.string(),
55
+ sessionId: z.string(),
56
+ eventId: z.string().nullable(),
57
+ artifactType: artifactTypeEnum,
58
+ path: z.string().nullable(),
59
+ createdAt: z.string(),
60
+ summary: z.string(),
61
+ category: z.string().nullable(),
62
+ status: z.string().nullable(),
63
+ outcome: z.string().nullable(),
64
+ intent: z.string().nullable(),
65
+ commandFamily: z.string().nullable(),
66
+ command: z.string().nullable(),
67
+ args: z.array(z.string()),
68
+ framework: z.string().nullable(),
69
+ packageManager: z.string().nullable(),
70
+ scriptName: z.string().nullable(),
71
+ dependencyAction: z.string().nullable(),
72
+ dependencyNames: z.array(z.string()),
73
+ failureSignatureKey: z.string().nullable(),
74
+ failureSignatureLabel: z.string().nullable(),
75
+ errorCode: z.string().nullable(),
76
+ lintRuleId: z.string().nullable(),
77
+ testSuite: z.string().nullable(),
78
+ testCase: z.string().nullable(),
79
+ issueKey: z.string().nullable(),
80
+ issueLabel: z.string().nullable(),
81
+ issueFamilyKey: z.string().nullable(),
82
+ issueFamilyLabel: z.string().nullable(),
83
+ pathCategory: z.string().nullable(),
84
+ changeScope: z.string().nullable(),
85
+ manifestKind: z.string().nullable(),
86
+ previousHead: z.string().nullable(),
87
+ currentHead: z.string().nullable(),
88
+ sourceRefs: z.array(z.object({
89
+ type: z.enum(["message", "event", "artifact"]),
90
+ id: z.string(),
91
+ })),
92
+ details: z.record(z.string(), z.unknown()),
93
+ })),
94
+ },
95
+ };
96
+ export const getSessionArtifactsMetadata = {
97
+ title: "Get Session Artifacts",
98
+ description: "Return paginated deterministic artifacts extracted from a session history, including commands, tests, file changes, and git commits.",
99
+ ...sessionDetailUiMetadata,
100
+ };
101
+ export function createGetSessionArtifactsHandler(db) {
102
+ return wrapToolHandler("get-session-artifacts", "Run reingest-session first if deterministic artifacts have not been generated yet.", async (params) => {
103
+ const session = db.findSessionById(params.id);
104
+ if (!session) {
105
+ throw new Error(`Session not found: ${params.id}`);
106
+ }
107
+ const limit = params.limit ?? DEFAULT_SESSION_DETAIL_PAGE_LIMIT;
108
+ const offset = params.offset ?? 0;
109
+ if (limit <= 0 || limit > MAX_SESSION_DETAIL_PAGE_LIMIT) {
110
+ throw new Error(`limit must be between 1 and ${MAX_SESSION_DETAIL_PAGE_LIMIT}`);
111
+ }
112
+ if (offset < 0) {
113
+ throw new Error("offset cannot be negative");
114
+ }
115
+ const summary = db.getSessionArtifactSummary(params.id);
116
+ const total = db.countSessionArtifacts(params.id, {
117
+ artifactType: params.artifactType,
118
+ });
119
+ const artifacts = db
120
+ .getSessionArtifacts(params.id, {
121
+ artifactType: params.artifactType,
122
+ limit,
123
+ offset,
124
+ })
125
+ .map((artifact) => {
126
+ const metadata = parseArtifactMetadata(artifact.metadata);
127
+ return {
128
+ id: artifact.id,
129
+ sessionId: artifact.sessionId,
130
+ eventId: artifact.eventId,
131
+ artifactType: artifact.artifactType,
132
+ path: artifact.path,
133
+ createdAt: artifact.createdAt,
134
+ summary: metadata.summary ?? artifact.path ?? artifact.artifactType,
135
+ category: metadata.category,
136
+ status: metadata.status,
137
+ outcome: metadata.outcome,
138
+ intent: metadata.intent,
139
+ commandFamily: metadata.commandFamily,
140
+ command: metadata.command,
141
+ args: metadata.args,
142
+ framework: metadata.framework,
143
+ packageManager: metadata.packageManager,
144
+ scriptName: metadata.scriptName,
145
+ dependencyAction: metadata.dependencyAction,
146
+ dependencyNames: metadata.dependencyNames,
147
+ failureSignatureKey: metadata.failureSignatureKey,
148
+ failureSignatureLabel: metadata.failureSignatureLabel,
149
+ errorCode: metadata.errorCode,
150
+ lintRuleId: metadata.lintRuleId,
151
+ testSuite: metadata.testSuite,
152
+ testCase: metadata.testCase,
153
+ issueKey: metadata.issueKey,
154
+ issueLabel: metadata.issueLabel,
155
+ issueFamilyKey: metadata.issueFamilyKey,
156
+ issueFamilyLabel: metadata.issueFamilyLabel,
157
+ pathCategory: metadata.pathCategory,
158
+ changeScope: metadata.changeScope,
159
+ manifestKind: metadata.manifestKind,
160
+ previousHead: metadata.previousHead,
161
+ currentHead: metadata.currentHead,
162
+ sourceRefs: metadata.sourceRefs,
163
+ details: metadata.details,
164
+ };
165
+ });
166
+ const page = buildPageInfo(total, artifacts.length, {
167
+ offset,
168
+ limit,
169
+ });
170
+ return formatSuccessResponse("Session artifacts retrieved successfully", {
171
+ Session: params.id,
172
+ Artifacts: artifacts.length,
173
+ Filter: params.artifactType ?? "all",
174
+ Offset: offset,
175
+ Limit: limit,
176
+ }, {
177
+ sessionId: params.id,
178
+ artifactSummary: summary,
179
+ page,
180
+ artifacts,
181
+ });
182
+ });
183
+ }
184
+ //# sourceMappingURL=get-session-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-artifacts.js","sourceRoot":"","sources":["../../../src/tools/get-session-artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import * as z from "zod";
2
+ import type { EvidenceDatabase } from "../lib/storage/index.js";
3
+ export declare const getSessionDecisionsSchema: {
4
+ inputSchema: {
5
+ id: z.ZodString;
6
+ limit: z.ZodOptional<z.ZodNumber>;
7
+ offset: z.ZodOptional<z.ZodNumber>;
8
+ };
9
+ outputSchema: {
10
+ sessionId: z.ZodString;
11
+ page: z.ZodObject<{
12
+ total: z.ZodNumber;
13
+ offset: z.ZodNumber;
14
+ limit: z.ZodNumber;
15
+ returned: z.ZodNumber;
16
+ hasMore: z.ZodBoolean;
17
+ nextOffset: z.ZodNullable<z.ZodNumber>;
18
+ }, z.core.$strip>;
19
+ decisions: z.ZodArray<z.ZodObject<{
20
+ id: z.ZodString;
21
+ sessionId: z.ZodString;
22
+ title: z.ZodString;
23
+ summary: z.ZodString;
24
+ rationale: z.ZodNullable<z.ZodString>;
25
+ status: z.ZodEnum<{
26
+ proposed: "proposed";
27
+ accepted: "accepted";
28
+ rejected: "rejected";
29
+ open: "open";
30
+ }>;
31
+ sourceRefs: z.ZodArray<z.ZodObject<{
32
+ type: z.ZodString;
33
+ id: z.ZodString;
34
+ }, z.core.$strip>>;
35
+ createdAt: z.ZodString;
36
+ }, z.core.$strip>>;
37
+ };
38
+ };
39
+ export declare const getSessionDecisionsMetadata: {
40
+ _meta: {
41
+ readonly ui: {
42
+ readonly resourceUri: "ui://footprint/session-detail.html";
43
+ };
44
+ };
45
+ title: string;
46
+ description: string;
47
+ };
48
+ export declare function createGetSessionDecisionsHandler(db: EvidenceDatabase): (params: {
49
+ id: string;
50
+ limit?: number;
51
+ offset?: number;
52
+ }) => Promise<import("../lib/tool-response.js").ToolResponse<{
53
+ sessionId: string;
54
+ page: import("../lib/session-history.js").PageInfo;
55
+ decisions: {
56
+ sourceRefs: {
57
+ type: string;
58
+ id: string;
59
+ }[];
60
+ id: string;
61
+ sessionId: string;
62
+ title: string;
63
+ summary: string;
64
+ rationale: string | null;
65
+ status: import("../lib/storage/types.js").DecisionStatus;
66
+ createdAt: string;
67
+ }[];
68
+ }>>;
69
+ //# sourceMappingURL=get-session-decisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-decisions.d.ts","sourceRoot":"","sources":["../../../src/tools/get-session-decisions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAQzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAoBhE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;CAKvC,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,gBAAgB;QAI5C,MAAM;YAAU,MAAM;aAAW,MAAM;;;;;;kBAjEf,MAAM;gBAAM,MAAM;;;;;;;;;;IAmHlE"}
@@ -0,0 +1,99 @@
1
+ import * as z from "zod";
2
+ import { buildPageInfo, DEFAULT_SESSION_DETAIL_PAGE_LIMIT, MAX_SESSION_DETAIL_PAGE_LIMIT, } from "../lib/session-history.js";
3
+ import { formatSuccessResponse } from "../lib/tool-response.js";
4
+ import { wrapToolHandler } from "../lib/tool-wrapper.js";
5
+ import { sessionDetailUiMetadata } from "./session-ui-metadata.js";
6
+ function parseRefs(value) {
7
+ try {
8
+ return JSON.parse(value);
9
+ }
10
+ catch {
11
+ return [];
12
+ }
13
+ }
14
+ const pageInfoSchema = z.object({
15
+ total: z.number(),
16
+ offset: z.number(),
17
+ limit: z.number(),
18
+ returned: z.number(),
19
+ hasMore: z.boolean(),
20
+ nextOffset: z.number().nullable(),
21
+ });
22
+ export const getSessionDecisionsSchema = {
23
+ inputSchema: {
24
+ id: z.string().describe("ID of the recorded session"),
25
+ limit: z
26
+ .number()
27
+ .int()
28
+ .positive()
29
+ .max(MAX_SESSION_DETAIL_PAGE_LIMIT)
30
+ .optional()
31
+ .describe(`Optional page size for the decision slice. Defaults to ${DEFAULT_SESSION_DETAIL_PAGE_LIMIT}.`),
32
+ offset: z
33
+ .number()
34
+ .int()
35
+ .min(0)
36
+ .optional()
37
+ .describe("Optional offset for the decision slice."),
38
+ },
39
+ outputSchema: {
40
+ sessionId: z.string(),
41
+ page: pageInfoSchema,
42
+ decisions: z.array(z.object({
43
+ id: z.string(),
44
+ sessionId: z.string(),
45
+ title: z.string(),
46
+ summary: z.string(),
47
+ rationale: z.string().nullable(),
48
+ status: z.enum(["proposed", "accepted", "rejected", "open"]),
49
+ sourceRefs: z.array(z.object({ type: z.string(), id: z.string() })),
50
+ createdAt: z.string(),
51
+ })),
52
+ },
53
+ };
54
+ export const getSessionDecisionsMetadata = {
55
+ title: "Get Session Decisions",
56
+ description: "Return paginated derived decisions extracted from a session history.",
57
+ ...sessionDetailUiMetadata,
58
+ };
59
+ export function createGetSessionDecisionsHandler(db) {
60
+ return wrapToolHandler("get-session-decisions", "Run reingest-session first if decisions have not been generated yet.", async (params) => {
61
+ const session = db.findSessionById(params.id);
62
+ if (!session) {
63
+ throw new Error(`Session not found: ${params.id}`);
64
+ }
65
+ const limit = params.limit ?? DEFAULT_SESSION_DETAIL_PAGE_LIMIT;
66
+ const offset = params.offset ?? 0;
67
+ if (limit <= 0 || limit > MAX_SESSION_DETAIL_PAGE_LIMIT) {
68
+ throw new Error(`limit must be between 1 and ${MAX_SESSION_DETAIL_PAGE_LIMIT}`);
69
+ }
70
+ if (offset < 0) {
71
+ throw new Error("offset cannot be negative");
72
+ }
73
+ const total = db.countSessionDecisions(params.id);
74
+ const decisions = db
75
+ .getSessionDecisions(params.id, {
76
+ limit,
77
+ offset,
78
+ })
79
+ .map((decision) => ({
80
+ ...decision,
81
+ sourceRefs: parseRefs(decision.sourceRefs),
82
+ }));
83
+ const page = buildPageInfo(total, decisions.length, {
84
+ offset,
85
+ limit,
86
+ });
87
+ return formatSuccessResponse("Session decisions retrieved successfully", {
88
+ Session: params.id,
89
+ Decisions: decisions.length,
90
+ Offset: offset,
91
+ Limit: limit,
92
+ }, {
93
+ sessionId: params.id,
94
+ page,
95
+ decisions,
96
+ });
97
+ });
98
+ }
99
+ //# sourceMappingURL=get-session-decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-decisions.js","sourceRoot":"","sources":["../../../src/tools/get-session-decisions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import * as z from "zod";
2
+ import type { EvidenceDatabase } from "../lib/storage/index.js";
3
+ export declare const getSessionMessagesSchema: {
4
+ inputSchema: {
5
+ id: z.ZodString;
6
+ limit: z.ZodOptional<z.ZodNumber>;
7
+ offset: z.ZodOptional<z.ZodNumber>;
8
+ };
9
+ outputSchema: {
10
+ sessionId: z.ZodString;
11
+ total: z.ZodNumber;
12
+ page: z.ZodObject<{
13
+ total: z.ZodNumber;
14
+ offset: z.ZodNumber;
15
+ limit: z.ZodNumber;
16
+ returned: z.ZodNumber;
17
+ hasMore: z.ZodBoolean;
18
+ nextOffset: z.ZodNullable<z.ZodNumber>;
19
+ }, z.core.$strip>;
20
+ messages: z.ZodArray<z.ZodObject<{
21
+ id: z.ZodString;
22
+ sessionId: z.ZodString;
23
+ seq: z.ZodNumber;
24
+ role: z.ZodEnum<{
25
+ user: "user";
26
+ assistant: "assistant";
27
+ system: "system";
28
+ }>;
29
+ source: z.ZodString;
30
+ content: z.ZodString;
31
+ capturedAt: z.ZodString;
32
+ metadata: z.ZodNullable<z.ZodString>;
33
+ }, z.core.$strip>>;
34
+ };
35
+ };
36
+ export declare const getSessionMessagesMetadata: {
37
+ _meta: {
38
+ readonly ui: {
39
+ readonly resourceUri: "ui://footprint/session-detail.html";
40
+ };
41
+ };
42
+ title: string;
43
+ description: string;
44
+ };
45
+ export declare function createGetSessionMessagesHandler(db: EvidenceDatabase): (params: {
46
+ id: string;
47
+ limit?: number;
48
+ offset?: number;
49
+ }) => Promise<import("../lib/tool-response.js").ToolResponse<{
50
+ sessionId: string;
51
+ total: number;
52
+ page: import("../lib/session-history.js").PageInfo;
53
+ messages: import("../lib/storage/types.js").SessionMessageRecord[];
54
+ }>>;
55
+ //# sourceMappingURL=get-session-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-messages.d.ts","sourceRoot":"","sources":["../../../src/tools/get-session-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAOzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAWhE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCpC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;CAKtC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,gBAAgB;QAI3C,MAAM;YAAU,MAAM;aAAW,MAAM;;;;;;IA+C/D"}