@stigmer/react 0.0.53 → 0.0.54

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 (113) hide show
  1. package/execution/ArtifactCard.d.ts +11 -1
  2. package/execution/ArtifactCard.d.ts.map +1 -1
  3. package/execution/ArtifactCard.js +22 -3
  4. package/execution/ArtifactCard.js.map +1 -1
  5. package/execution/ArtifactPreviewModal.d.ts.map +1 -1
  6. package/execution/ArtifactPreviewModal.js +1 -1
  7. package/execution/ArtifactPreviewModal.js.map +1 -1
  8. package/execution/ArtifactsWidget.d.ts +26 -19
  9. package/execution/ArtifactsWidget.d.ts.map +1 -1
  10. package/execution/ArtifactsWidget.js +24 -26
  11. package/execution/ArtifactsWidget.js.map +1 -1
  12. package/execution/MessageThread.d.ts +10 -1
  13. package/execution/MessageThread.d.ts.map +1 -1
  14. package/execution/MessageThread.js +19 -17
  15. package/execution/MessageThread.js.map +1 -1
  16. package/execution/SandboxContext.d.ts +32 -0
  17. package/execution/SandboxContext.d.ts.map +1 -0
  18. package/execution/SandboxContext.js +26 -0
  19. package/execution/SandboxContext.js.map +1 -0
  20. package/execution/ToolArgsView.d.ts.map +1 -1
  21. package/execution/ToolArgsView.js +3 -1
  22. package/execution/ToolArgsView.js.map +1 -1
  23. package/execution/ToolCallDetail.d.ts.map +1 -1
  24. package/execution/ToolCallDetail.js +3 -1
  25. package/execution/ToolCallDetail.js.map +1 -1
  26. package/execution/ToolCallItem.d.ts.map +1 -1
  27. package/execution/ToolCallItem.js +7 -1
  28. package/execution/ToolCallItem.js.map +1 -1
  29. package/execution/WriteBackCard.d.ts +34 -0
  30. package/execution/WriteBackCard.d.ts.map +1 -0
  31. package/execution/WriteBackCard.js +75 -0
  32. package/execution/WriteBackCard.js.map +1 -0
  33. package/execution/WriteBacksWidget.d.ts +49 -0
  34. package/execution/WriteBacksWidget.d.ts.map +1 -0
  35. package/execution/WriteBacksWidget.js +44 -0
  36. package/execution/WriteBacksWidget.js.map +1 -0
  37. package/execution/__tests__/file-path-resolver.test.d.ts +2 -0
  38. package/execution/__tests__/file-path-resolver.test.d.ts.map +1 -0
  39. package/execution/__tests__/file-path-resolver.test.js +180 -0
  40. package/execution/__tests__/file-path-resolver.test.js.map +1 -0
  41. package/execution/file-path-resolver.d.ts +3 -3
  42. package/execution/file-path-resolver.d.ts.map +1 -1
  43. package/execution/file-path-resolver.js +23 -12
  44. package/execution/file-path-resolver.js.map +1 -1
  45. package/execution/index.d.ts +9 -0
  46. package/execution/index.d.ts.map +1 -1
  47. package/execution/index.js +5 -0
  48. package/execution/index.js.map +1 -1
  49. package/execution/sandbox-path-normalizer.d.ts +46 -0
  50. package/execution/sandbox-path-normalizer.d.ts.map +1 -0
  51. package/execution/sandbox-path-normalizer.js +73 -0
  52. package/execution/sandbox-path-normalizer.js.map +1 -0
  53. package/execution/useArtifactContent.d.ts +5 -1
  54. package/execution/useArtifactContent.d.ts.map +1 -1
  55. package/execution/useArtifactContent.js +6 -2
  56. package/execution/useArtifactContent.js.map +1 -1
  57. package/execution/useWorkspaceWriteBacks.d.ts +40 -0
  58. package/execution/useWorkspaceWriteBacks.d.ts.map +1 -0
  59. package/execution/useWorkspaceWriteBacks.js +41 -0
  60. package/execution/useWorkspaceWriteBacks.js.map +1 -0
  61. package/github/GitHubRepoPicker.d.ts +5 -2
  62. package/github/GitHubRepoPicker.d.ts.map +1 -1
  63. package/github/GitHubRepoPicker.js +133 -36
  64. package/github/GitHubRepoPicker.js.map +1 -1
  65. package/github/index.d.ts +1 -0
  66. package/github/index.d.ts.map +1 -1
  67. package/github/index.js +1 -0
  68. package/github/index.js.map +1 -1
  69. package/github/useGitHubSearch.d.ts +20 -0
  70. package/github/useGitHubSearch.d.ts.map +1 -0
  71. package/github/useGitHubSearch.js +127 -0
  72. package/github/useGitHubSearch.js.map +1 -0
  73. package/index.d.ts +6 -6
  74. package/index.d.ts.map +1 -1
  75. package/index.js +3 -3
  76. package/index.js.map +1 -1
  77. package/package.json +4 -4
  78. package/session/index.d.ts +4 -0
  79. package/session/index.d.ts.map +1 -1
  80. package/session/index.js +2 -0
  81. package/session/index.js.map +1 -1
  82. package/session/useSessionArtifacts.d.ts +73 -0
  83. package/session/useSessionArtifacts.d.ts.map +1 -0
  84. package/session/useSessionArtifacts.js +95 -0
  85. package/session/useSessionArtifacts.js.map +1 -0
  86. package/session/useSessionWriteBacks.d.ts +56 -0
  87. package/session/useSessionWriteBacks.d.ts.map +1 -0
  88. package/session/useSessionWriteBacks.js +56 -0
  89. package/session/useSessionWriteBacks.js.map +1 -0
  90. package/src/execution/ArtifactCard.tsx +40 -0
  91. package/src/execution/ArtifactPreviewModal.tsx +2 -0
  92. package/src/execution/ArtifactsWidget.tsx +51 -43
  93. package/src/execution/MessageThread.tsx +18 -0
  94. package/src/execution/SandboxContext.ts +47 -0
  95. package/src/execution/ToolArgsView.tsx +3 -1
  96. package/src/execution/ToolCallDetail.tsx +3 -1
  97. package/src/execution/ToolCallItem.tsx +7 -1
  98. package/src/execution/WriteBackCard.tsx +210 -0
  99. package/src/execution/WriteBacksWidget.tsx +82 -0
  100. package/src/execution/__tests__/file-path-resolver.test.ts +295 -0
  101. package/src/execution/file-path-resolver.ts +24 -12
  102. package/src/execution/index.ts +13 -0
  103. package/src/execution/sandbox-path-normalizer.ts +80 -0
  104. package/src/execution/useArtifactContent.ts +6 -1
  105. package/src/execution/useWorkspaceWriteBacks.ts +56 -0
  106. package/src/github/GitHubRepoPicker.tsx +413 -108
  107. package/src/github/index.ts +5 -0
  108. package/src/github/useGitHubSearch.ts +162 -0
  109. package/src/index.ts +14 -0
  110. package/src/session/index.ts +12 -0
  111. package/src/session/useSessionArtifacts.ts +143 -0
  112. package/src/session/useSessionWriteBacks.ts +94 -0
  113. package/styles.css +1 -1
@@ -52,9 +52,9 @@ export type ResolvedPathAction = {
52
52
  * 1. **Platform paths** (`.stigmer/` prefix) → copy raw path.
53
53
  * 2. **Workspace paths** → match against workspace entries:
54
54
  * - Single entry: treat path as relative to that entry.
55
- * - Multiple entries: match first path segment against entry names.
56
- * Unmatched segments fall back to the first entry (optimistic —
57
- * single-workspace sessions are the common case).
55
+ * - Multiple entries: scan path segments for an entry name match
56
+ * (handles org-prefixed paths like `plantonhq/agent-fleet/...`).
57
+ * Unmatched paths fall back to the first entry.
58
58
  * 3. **Git source** → construct GitHub blob URL.
59
59
  * 4. **Local source** → join with absolute local path for copy.
60
60
  * 5. **Fallback** → copy the raw path.
@@ -1 +1 @@
1
- {"version":3,"file":"file-path-resolver.d.ts","sourceRoot":"","sources":["../../src/execution/file-path-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAC;AAKjG;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAU7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAkBf;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,SAAS,cAAc,EAAE,GAC1C,kBAAkB,CAqCpB"}
1
+ {"version":3,"file":"file-path-resolver.d.ts","sourceRoot":"","sources":["../../src/execution/file-path-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAC;AAKjG;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAU7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CA0Bf;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,SAAS,cAAc,EAAE,GAC1C,kBAAkB,CAqCpB"}
@@ -44,7 +44,14 @@ export function resolveGitBrowseUrl(gitUrl, branch, commit, relPath) {
44
44
  if (!repoPath)
45
45
  return null;
46
46
  const ref = commit || branch || "HEAD";
47
- const cleanRelPath = relPath.replace(/^\/+/, "");
47
+ let cleanRelPath = relPath.replace(/^\/+/, "");
48
+ // Guard against relPath that accidentally duplicates the org/repo
49
+ // already encoded in gitUrl (e.g. relPath = "acme/app/src/main.go"
50
+ // when repoPath is "acme/app"). Strip the redundant prefix so the
51
+ // final URL doesn't contain the repo path twice.
52
+ if (cleanRelPath.startsWith(repoPath + "/")) {
53
+ cleanRelPath = cleanRelPath.slice(repoPath.length + 1);
54
+ }
48
55
  return `https://github.com/${repoPath}/blob/${ref}/${cleanRelPath}`;
49
56
  }
50
57
  /**
@@ -55,9 +62,9 @@ export function resolveGitBrowseUrl(gitUrl, branch, commit, relPath) {
55
62
  * 1. **Platform paths** (`.stigmer/` prefix) → copy raw path.
56
63
  * 2. **Workspace paths** → match against workspace entries:
57
64
  * - Single entry: treat path as relative to that entry.
58
- * - Multiple entries: match first path segment against entry names.
59
- * Unmatched segments fall back to the first entry (optimistic —
60
- * single-workspace sessions are the common case).
65
+ * - Multiple entries: scan path segments for an entry name match
66
+ * (handles org-prefixed paths like `plantonhq/agent-fleet/...`).
67
+ * Unmatched paths fall back to the first entry.
61
68
  * 3. **Git source** → construct GitHub blob URL.
62
69
  * 4. **Local source** → join with absolute local path for copy.
63
70
  * 5. **Fallback** → copy the raw path.
@@ -94,19 +101,23 @@ export function resolvePathAction(path, workspaceEntries) {
94
101
  /**
95
102
  * Matches a workspace-relative path against entries. With a single
96
103
  * entry the path is used as-is. With multiple entries the first path
97
- * segment is tested against entry names; unmatched paths fall back to
98
- * the first entry (same strategy as the CLI).
104
+ * segment is tested against entry names. When the first segment
105
+ * doesn't match, deeper segments are scanned this handles tool-call
106
+ * paths that embed an org prefix (e.g. `plantonhq/agent-fleet/...`
107
+ * where the entry name is `agent-fleet`). Unmatched paths fall back
108
+ * to the first entry.
99
109
  */
100
110
  function matchWorkspaceEntry(relPath, entries) {
101
111
  if (entries.length === 1) {
102
112
  return { entry: entries[0], relPath };
103
113
  }
104
- const slashIdx = relPath.indexOf("/");
105
- const firstSegment = slashIdx >= 0 ? relPath.slice(0, slashIdx) : relPath;
106
- for (const entry of entries) {
107
- if (entry.name === firstSegment) {
108
- const rest = slashIdx >= 0 ? relPath.slice(slashIdx + 1) : "";
109
- return { entry, relPath: rest };
114
+ const segments = relPath.split("/");
115
+ for (let i = 0; i < segments.length; i++) {
116
+ for (const entry of entries) {
117
+ if (entry.name === segments[i]) {
118
+ const rest = segments.slice(i + 1).join("/");
119
+ return { entry, relPath: rest };
120
+ }
110
121
  }
111
122
  }
112
123
  return { entry: entries[0], relPath };
@@ -1 +1 @@
1
- {"version":3,"file":"file-path-resolver.js","sourceRoot":"","sources":["../../src/execution/file-path-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-path-resolver.js","sourceRoot":"","sources":["../../src/execution/file-path-resolver.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export { useExecutionArtifacts } from "./useExecutionArtifacts";
9
9
  export type { UseExecutionArtifactsReturn } from "./useExecutionArtifacts";
10
10
  export { useArtifactContent } from "./useArtifactContent";
11
11
  export type { UseArtifactContentReturn } from "./useArtifactContent";
12
+ export { useWorkspaceWriteBacks } from "./useWorkspaceWriteBacks";
13
+ export type { UseWorkspaceWriteBacksReturn } from "./useWorkspaceWriteBacks";
14
+ export { WriteBackCard } from "./WriteBackCard";
15
+ export type { WriteBackCardProps } from "./WriteBackCard";
12
16
  export { isTextArtifact, isArtifactExpired, formatArtifactSize, getArtifactExtension, getFileExtension, getArtifactRenderMode, } from "./artifact-utils";
13
17
  export type { ArtifactRenderMode } from "./artifact-utils";
14
18
  export { ExecutionPhaseBadge } from "./ExecutionPhaseBadge";
@@ -51,12 +55,17 @@ export { ArtifactPreviewModal } from "./ArtifactPreviewModal";
51
55
  export type { ArtifactPreviewModalProps } from "./ArtifactPreviewModal";
52
56
  export { ArtifactsWidget } from "./ArtifactsWidget";
53
57
  export type { ArtifactsWidgetProps } from "./ArtifactsWidget";
58
+ export { WriteBacksWidget } from "./WriteBacksWidget";
59
+ export type { WriteBacksWidgetProps } from "./WriteBacksWidget";
54
60
  export { resolveToolCategory, extractPrimaryArg, extractPrimaryArgFromPreview, humanizeToolName, } from "./tool-categories";
55
61
  export type { ToolCategory, ToolCategoryInfo } from "./tool-categories";
56
62
  export { FilePathLink } from "./FilePathLink";
57
63
  export type { FilePathLinkProps } from "./FilePathLink";
58
64
  export { FilePathContext } from "./FilePathContext";
59
65
  export type { FilePathContextValue } from "./FilePathContext";
66
+ export { normalizeSandboxPaths } from "./sandbox-path-normalizer";
67
+ export { SandboxContext, useSandboxNormalize } from "./SandboxContext";
68
+ export type { SandboxContextValue } from "./SandboxContext";
60
69
  export { classifyPath, resolveGitBrowseUrl, resolvePathAction } from "./file-path-resolver";
61
70
  export type { PathClassification, ResolvedPathAction } from "./file-path-resolver";
62
71
  export { useSessionVariables } from "./useSessionVariables";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -4,6 +4,8 @@ export { useExecutionStream } from "./useExecutionStream";
4
4
  export { useExecutionUsage, aggregateUsage } from "./useExecutionUsage";
5
5
  export { useExecutionArtifacts } from "./useExecutionArtifacts";
6
6
  export { useArtifactContent } from "./useArtifactContent";
7
+ export { useWorkspaceWriteBacks } from "./useWorkspaceWriteBacks";
8
+ export { WriteBackCard } from "./WriteBackCard";
7
9
  export { isTextArtifact, isArtifactExpired, formatArtifactSize, getArtifactExtension, getFileExtension, getArtifactRenderMode, } from "./artifact-utils";
8
10
  export { ExecutionPhaseBadge } from "./ExecutionPhaseBadge";
9
11
  export { SetupProgress } from "./SetupProgress";
@@ -25,9 +27,12 @@ export { ArtifactCard } from "./ArtifactCard";
25
27
  export { ArtifactContentRenderer } from "./ArtifactContentRenderer";
26
28
  export { ArtifactPreviewModal } from "./ArtifactPreviewModal";
27
29
  export { ArtifactsWidget } from "./ArtifactsWidget";
30
+ export { WriteBacksWidget } from "./WriteBacksWidget";
28
31
  export { resolveToolCategory, extractPrimaryArg, extractPrimaryArgFromPreview, humanizeToolName, } from "./tool-categories";
29
32
  export { FilePathLink } from "./FilePathLink";
30
33
  export { FilePathContext } from "./FilePathContext";
34
+ export { normalizeSandboxPaths } from "./sandbox-path-normalizer";
35
+ export { SandboxContext, useSandboxNormalize } from "./SandboxContext";
31
36
  export { classifyPath, resolveGitBrowseUrl, resolvePathAction } from "./file-path-resolver";
32
37
  export { useSessionVariables } from "./useSessionVariables";
33
38
  export { SessionVariablesInput } from "./SessionVariablesInput";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG7F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,GACf,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG7F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,GACf,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Display-time normalization for sandbox workspace paths.
3
+ *
4
+ * Mirrors the Python `humanize_sandbox_paths` in
5
+ * `graphton.core.backends.platform_mount` — same semantics, same
6
+ * replacement order. The SDK version acts as a safety net for
7
+ * historical data (persisted before backend humanization was added)
8
+ * and streaming edge cases.
9
+ *
10
+ * @module
11
+ */
12
+ /**
13
+ * Replace absolute sandbox workspace paths with workspace-relative
14
+ * display paths.
15
+ *
16
+ * Performs three ordered replacements:
17
+ *
18
+ * 1. `workspaceRoot + "/"` → empty string (makes paths workspace-relative)
19
+ * 2. `workspaceRoot` (exact) → `"."` (the workspace root itself)
20
+ * 3. Parent of `workspaceRoot` (sandbox home) → `"~"` (Unix convention)
21
+ *
22
+ * Returns `text` unchanged when `workspaceRoot` is empty.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * normalizeSandboxPaths(
27
+ * "ls /home/daytona/workspace/plantonhq/",
28
+ * "/home/daytona/workspace",
29
+ * );
30
+ * // => "ls plantonhq/"
31
+ *
32
+ * normalizeSandboxPaths(
33
+ * "cd /home/daytona/workspace && ls",
34
+ * "/home/daytona/workspace",
35
+ * );
36
+ * // => "cd . && ls"
37
+ *
38
+ * normalizeSandboxPaths(
39
+ * "cat /home/daytona/.bashrc",
40
+ * "/home/daytona/workspace",
41
+ * );
42
+ * // => "cat ~/.bashrc"
43
+ * ```
44
+ */
45
+ export declare function normalizeSandboxPaths(text: string, workspaceRoot: string): string;
46
+ //# sourceMappingURL=sandbox-path-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-path-normalizer.d.ts","sourceRoot":"","sources":["../../src/execution/sandbox-path-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,MAAM,CAoBR"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Display-time normalization for sandbox workspace paths.
3
+ *
4
+ * Mirrors the Python `humanize_sandbox_paths` in
5
+ * `graphton.core.backends.platform_mount` — same semantics, same
6
+ * replacement order. The SDK version acts as a safety net for
7
+ * historical data (persisted before backend humanization was added)
8
+ * and streaming edge cases.
9
+ *
10
+ * @module
11
+ */
12
+ /**
13
+ * Replace absolute sandbox workspace paths with workspace-relative
14
+ * display paths.
15
+ *
16
+ * Performs three ordered replacements:
17
+ *
18
+ * 1. `workspaceRoot + "/"` → empty string (makes paths workspace-relative)
19
+ * 2. `workspaceRoot` (exact) → `"."` (the workspace root itself)
20
+ * 3. Parent of `workspaceRoot` (sandbox home) → `"~"` (Unix convention)
21
+ *
22
+ * Returns `text` unchanged when `workspaceRoot` is empty.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * normalizeSandboxPaths(
27
+ * "ls /home/daytona/workspace/plantonhq/",
28
+ * "/home/daytona/workspace",
29
+ * );
30
+ * // => "ls plantonhq/"
31
+ *
32
+ * normalizeSandboxPaths(
33
+ * "cd /home/daytona/workspace && ls",
34
+ * "/home/daytona/workspace",
35
+ * );
36
+ * // => "cd . && ls"
37
+ *
38
+ * normalizeSandboxPaths(
39
+ * "cat /home/daytona/.bashrc",
40
+ * "/home/daytona/workspace",
41
+ * );
42
+ * // => "cat ~/.bashrc"
43
+ * ```
44
+ */
45
+ export function normalizeSandboxPaths(text, workspaceRoot) {
46
+ if (!text || !workspaceRoot)
47
+ return text;
48
+ const wsRoot = workspaceRoot.replace(/\/+$/, "");
49
+ // 1) Strip workspace root prefix (with trailing slash) → workspace-relative
50
+ text = replaceAll(text, wsRoot + "/", "");
51
+ // 2) Replace bare workspace root → "."
52
+ text = replaceAll(text, wsRoot, ".");
53
+ // 3) Replace sandbox home prefix → "~"
54
+ const lastSlash = wsRoot.lastIndexOf("/");
55
+ if (lastSlash > 0) {
56
+ const sandboxHome = wsRoot.slice(0, lastSlash);
57
+ text = replaceAll(text, sandboxHome + "/", "~/");
58
+ text = replaceAll(text, sandboxHome, "~");
59
+ }
60
+ return text;
61
+ }
62
+ function replaceAll(text, search, replacement) {
63
+ if (!search)
64
+ return text;
65
+ let result = text;
66
+ let idx = result.indexOf(search);
67
+ while (idx !== -1) {
68
+ result = result.slice(0, idx) + replacement + result.slice(idx + search.length);
69
+ idx = result.indexOf(search, idx + replacement.length);
70
+ }
71
+ return result;
72
+ }
73
+ //# sourceMappingURL=sandbox-path-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-path-normalizer.js","sourceRoot":"","sources":["../../src/execution/sandbox-path-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAY,EACZ,aAAqB;IAErB,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEjD,4EAA4E;IAC5E,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAE1C,uCAAuC;IACvC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAErC,uCAAuC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,MAAc,EAAE,WAAmB;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAChF,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -67,9 +67,13 @@ export interface UseArtifactContentReturn {
67
67
  * @param storageKey - Storage key from `ExecutionArtifact.storageKey`, or `null` to skip.
68
68
  * @param entryPath - For directory artifacts: relative path of a file within
69
69
  * the archive to extract. `null` returns the full artifact (existing behavior).
70
+ * @param contentHash - SHA-256 hex digest from `ExecutionArtifact.contentHash`.
71
+ * When the same file is overwritten during execution, the `storageKey` stays
72
+ * stable but `contentHash` changes, triggering a re-fetch so the UI never
73
+ * shows stale content. Pass `undefined` or omit for backwards compatibility.
70
74
  *
71
75
  * @see useExecutionArtifacts — extracts artifact metadata from an execution
72
76
  * @see isTextArtifact — heuristic for whether content is fetchable as text
73
77
  */
74
- export declare function useArtifactContent(executionId: string | null, storageKey: string | null, entryPath?: string | null): UseArtifactContentReturn;
78
+ export declare function useArtifactContent(executionId: string | null, storageKey: string | null, entryPath?: string | null, contentHash?: string): UseArtifactContentReturn;
75
79
  //# sourceMappingURL=useArtifactContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useArtifactContent.d.ts","sourceRoot":"","sources":["../../src/execution/useArtifactContent.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,wBAAwB,CAiE1B"}
1
+ {"version":3,"file":"useArtifactContent.d.ts","sourceRoot":"","sources":["../../src/execution/useArtifactContent.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,wBAAwB,CAiE1B"}
@@ -43,11 +43,15 @@ import { useStigmer } from "../hooks";
43
43
  * @param storageKey - Storage key from `ExecutionArtifact.storageKey`, or `null` to skip.
44
44
  * @param entryPath - For directory artifacts: relative path of a file within
45
45
  * the archive to extract. `null` returns the full artifact (existing behavior).
46
+ * @param contentHash - SHA-256 hex digest from `ExecutionArtifact.contentHash`.
47
+ * When the same file is overwritten during execution, the `storageKey` stays
48
+ * stable but `contentHash` changes, triggering a re-fetch so the UI never
49
+ * shows stale content. Pass `undefined` or omit for backwards compatibility.
46
50
  *
47
51
  * @see useExecutionArtifacts — extracts artifact metadata from an execution
48
52
  * @see isTextArtifact — heuristic for whether content is fetchable as text
49
53
  */
50
- export function useArtifactContent(executionId, storageKey, entryPath) {
54
+ export function useArtifactContent(executionId, storageKey, entryPath, contentHash) {
51
55
  const stigmer = useStigmer();
52
56
  const [content, setContent] = useState(null);
53
57
  const [contentType, setContentType] = useState(null);
@@ -96,7 +100,7 @@ export function useArtifactContent(executionId, storageKey, entryPath) {
96
100
  return () => {
97
101
  cancelled.current = true;
98
102
  };
99
- }, [executionId, storageKey, entryPath, stigmer, fetchKey]);
103
+ }, [executionId, storageKey, entryPath, contentHash, stigmer, fetchKey]);
100
104
  return { content, contentType, isTruncated, isLoading, error, refetch };
101
105
  }
102
106
  //# sourceMappingURL=useArtifactContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useArtifactContent.js","sourceRoot":"","sources":["../../src/execution/useArtifactContent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useArtifactContent.js","sourceRoot":"","sources":["../../src/execution/useArtifactContent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
2
+ import type { WorkspaceWriteBack } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/writeback_pb";
3
+ export interface UseWorkspaceWriteBacksReturn {
4
+ /** Write-back outcomes for git-backed workspace entries, ordered by workspace entry name. */
5
+ readonly writeBacks: readonly WorkspaceWriteBack[];
6
+ /** `true` when the execution has at least one write-back entry. */
7
+ readonly hasWriteBacks: boolean;
8
+ /** Total number of write-back entries. */
9
+ readonly writeBackCount: number;
10
+ }
11
+ /**
12
+ * Pure derivation hook that extracts workspace write-back data from an
13
+ * {@link AgentExecution} snapshot.
14
+ *
15
+ * Follows the same `useMemo`-based derivation pattern as
16
+ * {@link useExecutionArtifacts}: no side effects, no data fetching.
17
+ * The execution object (typically from {@link useExecutionStream}) is
18
+ * the single input.
19
+ *
20
+ * Returns an empty array when the execution is `null` or has no
21
+ * write-backs, eliminating null-checking at every consumer call site.
22
+ *
23
+ * Each `WorkspaceWriteBack` entry corresponds to a git-backed workspace
24
+ * entry where the platform detected file changes and ran the automatic
25
+ * branch/commit/push/PR workflow.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * const { execution } = useExecutionStream(executionId);
30
+ * const { writeBacks, hasWriteBacks } = useWorkspaceWriteBacks(execution);
31
+ *
32
+ * if (hasWriteBacks) {
33
+ * writeBacks.forEach((wb) => console.log(wb.workspaceEntryName, wb.pullRequestUrl));
34
+ * }
35
+ * ```
36
+ *
37
+ * @see useExecutionArtifacts — similar derivation hook for artifacts
38
+ */
39
+ export declare function useWorkspaceWriteBacks(execution: AgentExecution | null): UseWorkspaceWriteBacksReturn;
40
+ //# sourceMappingURL=useWorkspaceWriteBacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspaceWriteBacks.d.ts","sourceRoot":"","sources":["../../src/execution/useWorkspaceWriteBacks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mEAAmE,CAAC;AAE5G,MAAM,WAAW,4BAA4B;IAC3C,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,cAAc,GAAG,IAAI,GAC/B,4BAA4B,CAU9B"}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ /**
4
+ * Pure derivation hook that extracts workspace write-back data from an
5
+ * {@link AgentExecution} snapshot.
6
+ *
7
+ * Follows the same `useMemo`-based derivation pattern as
8
+ * {@link useExecutionArtifacts}: no side effects, no data fetching.
9
+ * The execution object (typically from {@link useExecutionStream}) is
10
+ * the single input.
11
+ *
12
+ * Returns an empty array when the execution is `null` or has no
13
+ * write-backs, eliminating null-checking at every consumer call site.
14
+ *
15
+ * Each `WorkspaceWriteBack` entry corresponds to a git-backed workspace
16
+ * entry where the platform detected file changes and ran the automatic
17
+ * branch/commit/push/PR workflow.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const { execution } = useExecutionStream(executionId);
22
+ * const { writeBacks, hasWriteBacks } = useWorkspaceWriteBacks(execution);
23
+ *
24
+ * if (hasWriteBacks) {
25
+ * writeBacks.forEach((wb) => console.log(wb.workspaceEntryName, wb.pullRequestUrl));
26
+ * }
27
+ * ```
28
+ *
29
+ * @see useExecutionArtifacts — similar derivation hook for artifacts
30
+ */
31
+ export function useWorkspaceWriteBacks(execution) {
32
+ return useMemo(() => {
33
+ const writeBacks = execution?.status?.workspaceWriteBacks ?? [];
34
+ return {
35
+ writeBacks,
36
+ hasWriteBacks: writeBacks.length > 0,
37
+ writeBackCount: writeBacks.length,
38
+ };
39
+ }, [execution]);
40
+ }
41
+ //# sourceMappingURL=useWorkspaceWriteBacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspaceWriteBacks.js","sourceRoot":"","sources":["../../src/execution/useWorkspaceWriteBacks.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAahC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAgC;IAEhC,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,UAAU,GAAG,SAAS,EAAE,MAAM,EAAE,mBAAmB,IAAI,EAAE,CAAC;QAEhE,OAAO;YACL,UAAU;YACV,aAAa,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;YACpC,cAAc,EAAE,UAAU,CAAC,MAAM;SAClC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -11,12 +11,15 @@ export interface GitHubRepoPickerProps {
11
11
  * Styled component for browsing and selecting a GitHub repository.
12
12
  *
13
13
  * Features:
14
- * - Owner-grouped sections (personal repos first, then orgs)
14
+ * - Two modes: "My Repos" (user's own repos) and "All GitHub" (public search)
15
+ * - Owner-grouped sections in My Repos mode
15
16
  * - Recently selected repos pinned at top
16
- * - Fixed 300px max-height with scroll shadow indicators
17
+ * - Fixed max-height with scroll shadow indicators
17
18
  * - Keyboard navigation (Arrow keys, Enter, Escape)
18
19
  * - Search with match highlighting
19
20
  * - Branch selector after repo selection
21
+ * - Manual URL entry for repos not discoverable via search
22
+ * - Link to manage GitHub App repository access
20
23
  *
21
24
  * All visual properties flow through `--stgm-*` tokens.
22
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubRepoPicker.d.ts","sourceRoot":"","sources":["../../src/github/GitHubRepoPicker.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAuHD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,2CAoWvB"}
1
+ {"version":3,"file":"GitHubRepoPicker.d.ts","sourceRoot":"","sources":["../../src/github/GitHubRepoPicker.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAwHD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,2CA0cvB"}