@nyte-ai/core 0.0.23 → 0.0.25-beta.1

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 (189) hide show
  1. package/THIRD-PARTY-NOTICES.md +2 -38
  2. package/dist/chunks/{compose-nj4nj5n9.js → compose-0f9x3cjd.js} +1 -1
  3. package/dist/chunks/{compose-yfcb6w2h.js → compose-0zrwy7nk.js} +1 -1
  4. package/dist/chunks/{compose-xhtgytrh.js → compose-122g5jvb.js} +1 -1
  5. package/dist/chunks/{compose-nkxwrphm.js → compose-17xxey5y.js} +6 -6
  6. package/dist/chunks/compose-1hgkp0q6.js +154 -0
  7. package/dist/chunks/{compose-ad80nkkn.js → compose-1kvvrw50.js} +6 -6
  8. package/dist/chunks/{compose-jeemzja1.js → compose-1nqjy2z5.js} +3 -3
  9. package/dist/chunks/compose-2e84znn8.js +62 -0
  10. package/dist/chunks/{compose-sprfv38c.js → compose-34cqydxc.js} +4 -4
  11. package/dist/chunks/{compose-ee0h1pk1.js → compose-3qkhfwtd.js} +4 -4
  12. package/dist/chunks/{compose-yr19b453.js → compose-4jqwbez4.js} +7 -7
  13. package/dist/chunks/{compose-5rg7askh.js → compose-4krv4vzw.js} +13 -5
  14. package/dist/chunks/{compose-byse0eqj.js → compose-4s0c5zqv.js} +6 -6
  15. package/dist/chunks/{compose-gj2ypr7q.js → compose-5ygdrc65.js} +3 -3
  16. package/dist/chunks/{compose-csh5vv2t.js → compose-6e9ktyhr.js} +1 -1
  17. package/dist/chunks/{compose-dbsn3bsy.js → compose-6zgf2dtw.js} +6 -3
  18. package/dist/chunks/{compose-ht1tbyr3.js → compose-75pnchkk.js} +22 -10
  19. package/dist/chunks/{compose-vzvm76dn.js → compose-79h43be5.js} +13 -5
  20. package/dist/chunks/compose-7bpnxft1.js +20 -0
  21. package/dist/chunks/{compose-jwy1gba9.js → compose-7sjf0y70.js} +3 -3
  22. package/dist/chunks/{compose-1tdb9ezw.js → compose-8nysak5a.js} +33 -22
  23. package/dist/chunks/{compose-ay7t13m9.js → compose-8p6emvvh.js} +8 -8
  24. package/dist/chunks/{compose-e3635qmn.js → compose-8ranx653.js} +17 -2
  25. package/dist/chunks/{compose-5njywhy8.js → compose-9tntshv3.js} +6 -6
  26. package/dist/chunks/{compose-gvm49f4b.js → compose-b10qcn9b.js} +1 -1
  27. package/dist/chunks/{compose-42egt9y7.js → compose-b4zb2rpb.js} +21 -12
  28. package/dist/chunks/{compose-767bb340.js → compose-c7jk6qr1.js} +1 -1
  29. package/dist/chunks/{compose-hfsn6pnt.js → compose-chcqk093.js} +39 -17
  30. package/dist/chunks/{compose-nw5hdpxk.js → compose-ct1h40fd.js} +8 -8
  31. package/dist/chunks/{compose-smsafpqe.js → compose-d5yhtpa7.js} +2 -2
  32. package/dist/chunks/{compose-qxfq6dn9.js → compose-d95420jw.js} +8 -8
  33. package/dist/chunks/{compose-gxjc6vz9.js → compose-dw8fvn94.js} +4 -2
  34. package/dist/chunks/{compose-fnncnk81.js → compose-dywbt4he.js} +5 -5
  35. package/dist/chunks/{compose-xvbyp65f.js → compose-gnfmty38.js} +30 -10
  36. package/dist/chunks/{compose-mdwr0er9.js → compose-h0d0vess.js} +4 -4
  37. package/dist/chunks/{compose-2gsbcjgv.js → compose-hf0nrd46.js} +22 -18
  38. package/dist/chunks/{compose-mcz93154.js → compose-ht5fhzzw.js} +10 -10
  39. package/dist/chunks/{compose-8pp3vtv0.js → compose-hx8j2kef.js} +4 -4
  40. package/dist/chunks/{compose-c4z4kp98.js → compose-j8xmyfy6.js} +118 -42
  41. package/dist/chunks/{compose-9jvn2wvh.js → compose-jawbhn7q.js} +21 -5
  42. package/dist/chunks/{compose-2rha31fc.js → compose-jbrtw0md.js} +4 -4
  43. package/dist/chunks/{compose-m01wspwf.js → compose-jrxg4vqg.js} +1 -1
  44. package/dist/chunks/{compose-bz70g01d.js → compose-kf2k4hq5.js} +5 -5
  45. package/dist/chunks/{compose-w6zb11k1.js → compose-kgdmzx0n.js} +6 -6
  46. package/dist/chunks/{compose-qjxtbzgq.js → compose-krkyrds4.js} +11 -5
  47. package/dist/chunks/{compose-tppkp915.js → compose-kw3bf8mf.js} +4 -4
  48. package/dist/chunks/{compose-d95fwwvw.js → compose-kwbs1f34.js} +2 -2
  49. package/dist/chunks/{compose-j42p9wfs.js → compose-n29d5dzv.js} +1 -1
  50. package/dist/chunks/{compose-qwbe95qs.js → compose-n5f6w2y6.js} +1 -1
  51. package/dist/chunks/{compose-a7k9h27z.js → compose-nc60858y.js} +4 -4
  52. package/dist/chunks/{compose-6r5ymwyr.js → compose-nenmmq5w.js} +30 -10
  53. package/dist/chunks/{compose-enq3x3rq.js → compose-p7j0gt4t.js} +22 -7
  54. package/dist/chunks/compose-pb3420v8.js +74 -0
  55. package/dist/chunks/{compose-ts08bth2.js → compose-pcfvksb2.js} +1 -1
  56. package/dist/chunks/{compose-917xy085.js → compose-pjkzf9ev.js} +9 -9
  57. package/dist/chunks/{compose-c9wxgbjp.js → compose-prek5sd9.js} +2 -2
  58. package/dist/chunks/{compose-h14pmqv3.js → compose-qgz6q016.js} +1 -1
  59. package/dist/chunks/{compose-y6xgbg2h.js → compose-qq85vkhf.js} +1 -1
  60. package/dist/chunks/{compose-bd8c5n7k.js → compose-qyjchprv.js} +2 -2
  61. package/dist/chunks/{compose-97y00axn.js → compose-rh1d2g0s.js} +30 -16
  62. package/dist/chunks/compose-s23st6q6.js +4 -0
  63. package/dist/chunks/{compose-bbhk8vnr.js → compose-s4kyfjj6.js} +2 -2
  64. package/dist/chunks/{compose-t9fcqtby.js → compose-sjfbxw65.js} +93 -85
  65. package/dist/chunks/{compose-a40dnhy5.js → compose-vphbntyn.js} +7 -7
  66. package/dist/chunks/compose-vxme67gg.js +63 -0
  67. package/dist/chunks/compose-wgs4rgfp.js +32 -0
  68. package/dist/chunks/{compose-1xn3eecn.js → compose-xdq54csy.js} +39 -35
  69. package/dist/chunks/{compose-v46qmh60.js → compose-yd5t8qj3.js} +63 -126
  70. package/dist/chunks/{compose-vn7b7fdj.js → compose-ydth4n0z.js} +7 -3
  71. package/dist/chunks/{compose-6gt28900.js → compose-yxhvzsed.js} +4 -4
  72. package/dist/chunks/{compose-matk94se.js → compose-zajq79k0.js} +6 -6
  73. package/dist/chunks/{compose-ae5t6v5b.js → compose-zq7ar8qm.js} +4 -4
  74. package/dist/chunks/{compose-4ppmas7g.js → compose-zt2qtrxj.js} +4 -4
  75. package/dist/chunks/compose-ztyjpn84.js +59 -0
  76. package/dist/chunks/{compose-m91ffwss.js → compose-zv0t13e7.js} +2 -2
  77. package/dist/chunks/{compose-r8tz1xfj.js → compose-zx78edb2.js} +9 -5
  78. package/dist/src/agent/agent-loop.d.ts +4 -0
  79. package/dist/src/agent/agent-loop.js +3 -1
  80. package/dist/src/agent/compaction.js +38 -37
  81. package/dist/src/agent/open-parts.d.ts +34 -0
  82. package/dist/src/agent/open-parts.js +22 -0
  83. package/dist/src/agent/request.js +27 -26
  84. package/dist/src/agent/tool-runner.d.ts +5 -5
  85. package/dist/src/agent/tool-runner.js +31 -30
  86. package/dist/src/agent/transcript.js +34 -33
  87. package/dist/src/agent/turn.js +48 -43
  88. package/dist/src/api/connection.js +61 -56
  89. package/dist/src/api/head.d.ts +1 -2
  90. package/dist/src/api/head.js +43 -39
  91. package/dist/src/api/hold.d.ts +7 -0
  92. package/dist/src/api/hold.js +7 -0
  93. package/dist/src/api/part.js +20 -18
  94. package/dist/src/api/server.js +48 -45
  95. package/dist/src/api/session.js +48 -44
  96. package/dist/src/builtins/delegation.js +1 -1
  97. package/dist/src/builtins/environment.d.ts +8 -0
  98. package/dist/src/builtins/environment.js +3 -1
  99. package/dist/src/builtins/interruptions.d.ts +4 -0
  100. package/dist/src/builtins/interruptions.js +8 -0
  101. package/dist/src/compose.js +75 -68
  102. package/dist/src/contract/host.d.ts +6 -0
  103. package/dist/src/contract/kernel.d.ts +9 -6
  104. package/dist/src/contract/parts.d.ts +48 -46
  105. package/dist/src/contract/records.d.ts +429 -419
  106. package/dist/src/contract/records.js +1 -1
  107. package/dist/src/contract/server.d.ts +3 -1
  108. package/dist/src/contract/session.d.ts +31 -1
  109. package/dist/src/contract/session.js +6 -0
  110. package/dist/src/contract/workspace.d.ts +3 -1
  111. package/dist/src/drive/execution.js +44 -43
  112. package/dist/src/drive/interruptions.d.ts +10 -2
  113. package/dist/src/drive/interruptions.js +9 -5
  114. package/dist/src/drive/pause.d.ts +11 -0
  115. package/dist/src/drive/pause.js +10 -0
  116. package/dist/src/engine/admission-writes.d.ts +22 -0
  117. package/dist/src/engine/admission-writes.js +15 -0
  118. package/dist/src/engine/admission.d.ts +15 -1
  119. package/dist/src/engine/admission.js +25 -20
  120. package/dist/src/engine/batches.js +18 -18
  121. package/dist/src/engine/branch-summary.js +17 -17
  122. package/dist/src/engine/durable.js +17 -17
  123. package/dist/src/engine/fence.js +16 -16
  124. package/dist/src/engine/holds.d.ts +4 -0
  125. package/dist/src/engine/holds.js +43 -0
  126. package/dist/src/engine/jobs.js +24 -23
  127. package/dist/src/engine/lease.d.ts +5 -4
  128. package/dist/src/engine/lease.js +1 -1
  129. package/dist/src/engine/move.js +19 -19
  130. package/dist/src/engine/presence.js +2 -2
  131. package/dist/src/engine/principals.js +14 -14
  132. package/dist/src/engine/receipts.js +17 -17
  133. package/dist/src/engine/runs.js +22 -21
  134. package/dist/src/engine/start.js +34 -33
  135. package/dist/src/engine/surface.js +3 -3
  136. package/dist/src/engine/waits.js +15 -15
  137. package/dist/src/env/browser.js +25 -24
  138. package/dist/src/env/environment.js +27 -26
  139. package/dist/src/env/mcp.js +29 -28
  140. package/dist/src/env/session-changes.js +3 -3
  141. package/dist/src/env/trust.js +28 -27
  142. package/dist/src/env/workspaces.js +32 -31
  143. package/dist/src/env/worktrees.js +33 -32
  144. package/dist/src/extend/activation.d.ts +3 -0
  145. package/dist/src/extend/activation.js +35 -32
  146. package/dist/src/extend/hooks.js +19 -19
  147. package/dist/src/extend/models.js +26 -25
  148. package/dist/src/extend/plugin-api.js +14 -14
  149. package/dist/src/extend/plugin-runtime.d.ts +3 -1
  150. package/dist/src/extend/plugin-runtime.js +39 -38
  151. package/dist/src/extend/registry.js +24 -23
  152. package/dist/src/extend/resources.js +29 -28
  153. package/dist/src/extend/setting-layers.js +3 -3
  154. package/dist/src/extend/settings.js +36 -35
  155. package/dist/src/extend/workspace-commands.js +40 -39
  156. package/dist/src/fold/calls.js +4 -4
  157. package/dist/src/fold/checkpoint.js +9 -9
  158. package/dist/src/fold/code.d.ts +1 -1
  159. package/dist/src/fold/code.js +1 -1
  160. package/dist/src/fold/commit.js +13 -13
  161. package/dist/src/fold/draft.d.ts +37 -37
  162. package/dist/src/fold/draft.js +3 -3
  163. package/dist/src/fold/fold.js +6 -6
  164. package/dist/src/fold/paths.js +4 -4
  165. package/dist/src/fold/project.d.ts +2 -2
  166. package/dist/src/fold/project.js +6 -6
  167. package/dist/src/fold/reads.js +3 -3
  168. package/dist/src/fold/seen.d.ts +3 -5
  169. package/dist/src/fold/seen.js +17 -17
  170. package/dist/src/fold/view.d.ts +7 -1
  171. package/dist/src/fold/view.js +8 -23
  172. package/dist/src/fold/watch.js +12 -12
  173. package/dist/src/harness.d.ts +257 -257
  174. package/dist/src/harness.js +78 -71
  175. package/dist/src/index.d.ts +3 -1
  176. package/dist/src/index.js +13 -3
  177. package/dist/src/server.js +73 -66
  178. package/dist/src/store/inspect.js +3 -3
  179. package/dist/src/store/memory-store.js +3 -3
  180. package/dist/src/store/migrations.js +2 -2
  181. package/dist/src/store/model-state.js +2 -2
  182. package/dist/src/store/parts.js +3 -3
  183. package/dist/src/store/session-index.js +2 -2
  184. package/dist/src/store/session.js +2 -2
  185. package/dist/src/store.js +5 -5
  186. package/dist/src/testing.js +76 -69
  187. package/dist/src/util/line-diff.d.ts +5 -5
  188. package/package.json +4 -5
  189. package/dist/chunks/compose-hfrjm4a1.js +0 -88
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  decodeRunRecord2,
7
7
  decodeCallRecord2
8
- } from "./compose-gxjc6vz9.js";
8
+ } from "./compose-dw8fvn94.js";
9
9
  import {
10
10
  sessionRef2,
11
11
  inboxRef2,
@@ -25,31 +25,31 @@ import {
25
25
  put2,
26
26
  attempt2,
27
27
  sessionEvent2
28
- } from "./compose-vn7b7fdj.js";
28
+ } from "./compose-ydth4n0z.js";
29
29
  import {
30
30
  failedParts2
31
- } from "./compose-d95fwwvw.js";
31
+ } from "./compose-kwbs1f34.js";
32
32
  import {
33
33
  wokenIndex2
34
34
  } from "./compose-0wq555bd.js";
35
35
  import {
36
36
  commit2
37
- } from "./compose-bbhk8vnr.js";
37
+ } from "./compose-s4kyfjj6.js";
38
38
  import {
39
39
  withFold2,
40
40
  liveParts2,
41
41
  readRunEnd2
42
- } from "./compose-xhtgytrh.js";
42
+ } from "./compose-122g5jvb.js";
43
43
  import {
44
44
  waitFor2
45
- } from "./compose-bz70g01d.js";
45
+ } from "./compose-kf2k4hq5.js";
46
46
  import {
47
47
  FENCED2,
48
48
  stopRun2
49
- } from "./compose-w6zb11k1.js";
49
+ } from "./compose-kgdmzx0n.js";
50
50
  import {
51
51
  send2
52
- } from "./compose-t9fcqtby.js";
52
+ } from "./compose-sjfbxw65.js";
53
53
 
54
54
  // src/engine/runs.ts
55
55
  import { asId, isJsonObject, SdkError } from "@nyte-ai/schema";
@@ -49,7 +49,8 @@ var SessionRecordType = record({
49
49
  createdAt: Type.Number(),
50
50
  lastActivityAt: Type.Number(),
51
51
  heads: list(HeadRecordType),
52
- prompt: nullable(typed()(PromptOverrideType))
52
+ prompt: nullable(typed()(PromptOverrideType)),
53
+ contextFiles: Type.Optional(Type.Literal(false))
53
54
  });
54
55
  var CommitRecordType = record({
55
56
  parent: nullable(idSchema()),
@@ -59,7 +60,8 @@ var CommitRecordType = record({
59
60
  });
60
61
  var InboxRecordType = record({
61
62
  messages: list(idSchema()),
62
- pendingInput: list(idSchema())
63
+ pendingInput: list(idSchema()),
64
+ hold: Type.Optional(record({ message: idSchema(), until: Type.Number() }))
63
65
  });
64
66
  var RunRecordType = record({
65
67
  view: typed()(RunViewType),
@@ -13,19 +13,19 @@ import {
13
13
  readRefExpectation2,
14
14
  put2,
15
15
  attempt2
16
- } from "./compose-vn7b7fdj.js";
16
+ } from "./compose-ydth4n0z.js";
17
17
  import {
18
18
  commit2
19
- } from "./compose-bbhk8vnr.js";
19
+ } from "./compose-s4kyfjj6.js";
20
20
  import {
21
21
  withFold2
22
- } from "./compose-xhtgytrh.js";
22
+ } from "./compose-122g5jvb.js";
23
23
  import {
24
24
  waitFor2
25
- } from "./compose-bz70g01d.js";
25
+ } from "./compose-kf2k4hq5.js";
26
26
  import {
27
27
  stopRun2
28
- } from "./compose-w6zb11k1.js";
28
+ } from "./compose-kgdmzx0n.js";
29
29
 
30
30
  // src/engine/receipts.ts
31
31
  import { asId, SdkError } from "@nyte-ai/schema";
@@ -23,44 +23,63 @@ import {
23
23
  toCommitObjectId2,
24
24
  readCommit2,
25
25
  sessionEvent2
26
- } from "./compose-vn7b7fdj.js";
26
+ } from "./compose-ydth4n0z.js";
27
27
  import {
28
28
  commit2
29
- } from "./compose-bbhk8vnr.js";
29
+ } from "./compose-s4kyfjj6.js";
30
30
  import {
31
31
  withFold2
32
- } from "./compose-xhtgytrh.js";
32
+ } from "./compose-122g5jvb.js";
33
33
  import {
34
- send2
35
- } from "./compose-t9fcqtby.js";
34
+ send2,
35
+ sendNow2,
36
+ reviseQueued2
37
+ } from "./compose-sjfbxw65.js";
38
+ import {
39
+ leaseHold2,
40
+ releaseHold2
41
+ } from "./compose-vxme67gg.js";
36
42
  import {
37
43
  move2
38
- } from "./compose-matk94se.js";
44
+ } from "./compose-zajq79k0.js";
39
45
  import {
40
46
  watchStore2
41
47
  } from "./compose-zfjxkavf.js";
42
48
  import {
43
49
  configure2
44
- } from "./compose-a40dnhy5.js";
50
+ } from "./compose-vphbntyn.js";
51
+ import {
52
+ advanceSeen2
53
+ } from "./compose-ztyjpn84.js";
45
54
  import {
46
55
  watchHead2,
47
56
  viewHead2,
48
57
  historyHead2
49
- } from "./compose-hfsn6pnt.js";
58
+ } from "./compose-chcqk093.js";
50
59
  import {
51
60
  extractUserText2
52
61
  } from "./compose-rxsqmcgq.js";
62
+ import {
63
+ holdMessage2
64
+ } from "./compose-pb3420v8.js";
53
65
 
54
66
  // src/api/head.ts
55
67
  import { isJsonObject, SdkError } from "@nyte-ai/schema";
56
68
  var PREVIEW = 80;
57
- function headHandle2(kernel, context, session, head, admit = send2) {
69
+ function headHandle2(kernel, context, session, head, activation = false) {
58
70
  const { principal } = context;
59
71
  const watch = (options) => watchHead2(kernel, { session, head, principal, options });
72
+ const revise = (message, content, options) => reviseQueued2(kernel, { session, head, context, message, content, options }, activation);
60
73
  return {
61
74
  sessionId: session,
62
75
  name: head,
63
- send: (content, options) => admit(kernel, { session, head, context, content, options }),
76
+ send: (content, options) => (activation ? sendNow2 : send2)(kernel, { session, head, context, content, options }),
77
+ revise,
78
+ hold: (message) => holdMessage2(message, {
79
+ hold: () => leaseHold2(kernel, session, head, message),
80
+ revise: (content, options) => revise(message, content, options),
81
+ release: () => releaseHold2(kernel, session, head, message)
82
+ }),
64
83
  async configure(patch) {
65
84
  const outcome = await configure2(kernel, session, head, patch);
66
85
  if (outcome.kind === "configured" && context !== CORE_CONTEXT2 && context.origin === null && context.authority.has("owner") && (patch.model !== undefined || patch.thinking !== undefined))
@@ -69,6 +88,7 @@ function headHandle2(kernel, context, session, head, admit = send2) {
69
88
  },
70
89
  view: (options) => viewHead2(kernel, { session, head, principal, options }),
71
90
  watch,
91
+ see: (tip) => advanceSeen2(kernel, { session, head, principal, commit: tip }),
72
92
  ...watchStore2(() => watch()),
73
93
  history: (input) => historyHead2(kernel, { session, head, principal, before: input.before, limit: input.limit }),
74
94
  tree: () => tree2(kernel, session, head),
@@ -3,14 +3,14 @@ import {
3
3
  } from "./compose-q6c7wswc.js";
4
4
  import {
5
5
  put2
6
- } from "./compose-vn7b7fdj.js";
6
+ } from "./compose-ydth4n0z.js";
7
7
  import {
8
8
  convertJsonSchema2,
9
9
  check2
10
10
  } from "./compose-bj54tkph.js";
11
11
  import {
12
12
  commit2
13
- } from "./compose-bbhk8vnr.js";
13
+ } from "./compose-s4kyfjj6.js";
14
14
  import {
15
15
  MODEL_PREFERENCE2,
16
16
  modelListingRef2,
@@ -19,13 +19,13 @@ import {
19
19
  readThinkingPreference2,
20
20
  readThinkingPreferences2,
21
21
  readModelSelection2
22
- } from "./compose-csh5vv2t.js";
22
+ } from "./compose-6e9ktyhr.js";
23
23
  import {
24
24
  closable2
25
25
  } from "./compose-zfjxkavf.js";
26
26
  import {
27
27
  bumpGeneration2
28
- } from "./compose-ae5t6v5b.js";
28
+ } from "./compose-zq7ar8qm.js";
29
29
 
30
30
  // src/extend/models.ts
31
31
  import { SdkError } from "@nyte-ai/schema";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  decodeSessionRecord2,
6
6
  decodeSeenRecord2
7
- } from "./compose-gxjc6vz9.js";
7
+ } from "./compose-dw8fvn94.js";
8
8
  import {
9
9
  objectId2
10
10
  } from "./compose-q6c7wswc.js";
@@ -27,7 +27,7 @@ import {
27
27
  attempt2,
28
28
  coversRecord2,
29
29
  sessionEvent2
30
- } from "./compose-vn7b7fdj.js";
30
+ } from "./compose-ydth4n0z.js";
31
31
  import {
32
32
  traced2,
33
33
  followTrace2,
@@ -35,10 +35,10 @@ import {
35
35
  } from "./compose-sd0stm97.js";
36
36
  import {
37
37
  commit2
38
- } from "./compose-bbhk8vnr.js";
38
+ } from "./compose-s4kyfjj6.js";
39
39
  import {
40
40
  stopRun2
41
- } from "./compose-w6zb11k1.js";
41
+ } from "./compose-kgdmzx0n.js";
42
42
  import {
43
43
  refusalError2,
44
44
  staticContributions2
@@ -47,17 +47,16 @@ import {
47
47
  receiptHandle2,
48
48
  sendReceipt2,
49
49
  withdraw2
50
- } from "./compose-fnncnk81.js";
50
+ } from "./compose-dywbt4he.js";
51
51
  import {
52
- sendNow2,
53
52
  admitDeciding2
54
- } from "./compose-t9fcqtby.js";
53
+ } from "./compose-sjfbxw65.js";
55
54
  import {
56
55
  recordAcquisition2
57
- } from "./compose-byse0eqj.js";
56
+ } from "./compose-4s0c5zqv.js";
58
57
  import {
59
58
  runHandle2
60
- } from "./compose-qxfq6dn9.js";
59
+ } from "./compose-d95420jw.js";
61
60
  import {
62
61
  latest2,
63
62
  closable2,
@@ -66,29 +65,29 @@ import {
66
65
  import {
67
66
  isolateWorkspace2,
68
67
  releaseWorktree2
69
- } from "./compose-ee0h1pk1.js";
68
+ } from "./compose-3qkhfwtd.js";
70
69
  import {
71
70
  releaseStart2,
72
71
  stopStart2,
73
72
  discardSession2
74
- } from "./compose-nw5hdpxk.js";
73
+ } from "./compose-ct1h40fd.js";
75
74
  import {
76
75
  runCommand2,
77
76
  completeSessionCommand2
78
- } from "./compose-ae5t6v5b.js";
77
+ } from "./compose-zq7ar8qm.js";
79
78
  import {
80
79
  configure2
81
- } from "./compose-a40dnhy5.js";
80
+ } from "./compose-vphbntyn.js";
82
81
  import {
83
82
  headHandle2,
84
83
  createHead2,
85
84
  mergeHead2,
86
85
  removeHead2
87
- } from "./compose-xvbyp65f.js";
86
+ } from "./compose-gnfmty38.js";
88
87
  import {
89
88
  createPart2,
90
89
  partHandle2
91
- } from "./compose-r8tz1xfj.js";
90
+ } from "./compose-zx78edb2.js";
92
91
 
93
92
  // src/api/session.ts
94
93
  import { asId, SdkError } from "@nyte-ai/schema";
@@ -154,7 +153,7 @@ function activated(kernel, part, session) {
154
153
  }
155
154
  function activationSession2(kernel, context, id) {
156
155
  const head = (name) => ({
157
- ...headHandle2(kernel, context, id, name, sendNow2),
156
+ ...headHandle2(kernel, context, id, name, true),
158
157
  configure: (patch) => configure2(kernel, id, name, patch, true)
159
158
  });
160
159
  return {
@@ -300,7 +299,11 @@ async function start(kernel, context, input) {
300
299
  prompt: input.prompt ?? null,
301
300
  content: input.content
302
301
  };
303
- const digest = await objectId2(input.isolation === undefined ? described : { ...described, isolation: input.isolation });
302
+ const digest = await objectId2({
303
+ ...described,
304
+ ...input.isolation === undefined ? {} : { isolation: input.isolation },
305
+ ...input.contextFiles === undefined ? {} : { contextFiles: input.contextFiles }
306
+ });
304
307
  const trace = (origin === null ? null : followedTrace2(origin.session)) ?? receipt;
305
308
  followTrace2(id, trace);
306
309
  return traced2("host.admit", trace, { session: id }, async () => {
@@ -338,7 +341,8 @@ async function start(kernel, context, input) {
338
341
  createdAt: at,
339
342
  lastActivityAt: at,
340
343
  heads: [{ name: MAIN2, stack: null, selected, lastRun: null }],
341
- prompt: input.prompt ?? null
344
+ prompt: input.prompt ?? null,
345
+ ...input.contextFiles === undefined ? {} : { contextFiles: input.contextFiles }
342
346
  };
343
347
  const outcome = await commit2(kernel, [
344
348
  {
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  decodeRunRecord2,
13
13
  decodePartRecord2
14
- } from "./compose-gxjc6vz9.js";
14
+ } from "./compose-dw8fvn94.js";
15
15
  import {
16
16
  dev2
17
17
  } from "./compose-n116fnmp.js";
@@ -29,36 +29,36 @@ import {
29
29
  attempt2,
30
30
  readCall2,
31
31
  readCalls2
32
- } from "./compose-vn7b7fdj.js";
32
+ } from "./compose-ydth4n0z.js";
33
33
  import {
34
34
  readAttributedPaths2,
35
35
  ownedChanges2,
36
36
  anotherChatLive2
37
- } from "./compose-yfcb6w2h.js";
37
+ } from "./compose-0zrwy7nk.js";
38
38
  import {
39
39
  settling2
40
- } from "./compose-d95fwwvw.js";
40
+ } from "./compose-kwbs1f34.js";
41
41
  import {
42
42
  commit2
43
- } from "./compose-bbhk8vnr.js";
43
+ } from "./compose-s4kyfjj6.js";
44
44
  import {
45
45
  signalsPark2,
46
46
  parkStep2,
47
47
  runStep2
48
- } from "./compose-byse0eqj.js";
48
+ } from "./compose-4s0c5zqv.js";
49
49
  import {
50
50
  startJob2
51
- } from "./compose-nkxwrphm.js";
51
+ } from "./compose-17xxey5y.js";
52
52
  import {
53
53
  publishPatch2
54
- } from "./compose-qxfq6dn9.js";
54
+ } from "./compose-d95420jw.js";
55
55
  import {
56
56
  hiddenOwners2,
57
57
  missingCapabilities2
58
- } from "./compose-bd8c5n7k.js";
58
+ } from "./compose-qyjchprv.js";
59
59
  import {
60
60
  toolSource2
61
- } from "./compose-ae5t6v5b.js";
61
+ } from "./compose-zq7ar8qm.js";
62
62
 
63
63
  // src/agent/tool-runner.ts
64
64
  import { Type } from "typebox";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  decodeTrustRecord2
3
- } from "./compose-gxjc6vz9.js";
3
+ } from "./compose-dw8fvn94.js";
4
4
  import {
5
5
  trustRef2,
6
6
  trustTarget2,
@@ -10,13 +10,13 @@ import {
10
10
  load2,
11
11
  put2,
12
12
  readKv2
13
- } from "./compose-vn7b7fdj.js";
13
+ } from "./compose-ydth4n0z.js";
14
14
  import {
15
15
  commit2
16
- } from "./compose-bbhk8vnr.js";
16
+ } from "./compose-s4kyfjj6.js";
17
17
  import {
18
18
  workspaceRecords2
19
- } from "./compose-4ppmas7g.js";
19
+ } from "./compose-zt2qtrxj.js";
20
20
 
21
21
  // src/env/trust.ts
22
22
  import { Value } from "typebox/value";
@@ -7,21 +7,21 @@ import {
7
7
  import {
8
8
  requireSession2,
9
9
  readKv2
10
- } from "./compose-vn7b7fdj.js";
10
+ } from "./compose-ydth4n0z.js";
11
11
  import {
12
12
  classifyFileSupport2,
13
13
  readWorkspace2
14
- } from "./compose-4ppmas7g.js";
14
+ } from "./compose-zt2qtrxj.js";
15
15
  import {
16
16
  WORKSPACE_TRUST2,
17
17
  projectTrust2
18
- } from "./compose-8pp3vtv0.js";
18
+ } from "./compose-hx8j2kef.js";
19
19
 
20
20
  // src/extend/resources.ts
21
21
  import { SdkError, standard } from "@nyte-ai/schema";
22
22
  import { Type } from "typebox";
23
23
  import { isMap, isScalar, parseDocument } from "yaml";
24
- var CONTEXT_NAMES = ["AGENTS.override.md", "AGENTS.md", "CLAUDE.md"];
24
+ var CONTEXT_NAMES = ["AGENTS.override.md", "AGENTS.md", "AGENTS.MD", "CLAUDE.md", "CLAUDE.MD"];
25
25
  var SKILL_DIRECTORIES = [".nyte/skills", ".agents/skills"];
26
26
  var FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;
27
27
  var ABSOLUTE = /^(?:\/|[A-Za-z]:[\\/])/;
@@ -29,7 +29,8 @@ var LINK_HOPS = 8;
29
29
  var SKILL_PATHS2 = "skills.paths";
30
30
  var scanIssues = new WeakMap;
31
31
  async function scanResources2(kernel, session) {
32
- const workspace = (await requireSession2(kernel.store, session)).record.workspace;
32
+ const record = (await requireSession2(kernel.store, session)).record;
33
+ const workspace = record.workspace;
33
34
  const table = kernel.workspaceState.scans;
34
35
  const cached = table.get(session);
35
36
  if (cached !== undefined && cached.workspace === workspace)
@@ -38,7 +39,7 @@ async function scanResources2(kernel, session) {
38
39
  const watching = new AbortController;
39
40
  const entry = {
40
41
  workspace,
41
- resources: scan(kernel, workspace, () => kernel.environments.attach(session)).then((resources) => {
42
+ resources: scan(kernel, workspace, () => kernel.environments.attach(session), record.contextFiles ?? true).then((resources) => {
42
43
  const api = kernel.plugins.runtimes().get(session)?.api("resources");
43
44
  for (const issue of resourceIssues2(resources))
44
45
  api?.report(issue);
@@ -77,7 +78,7 @@ function dropScans2(kernel, chosen = () => true) {
77
78
  }
78
79
  }
79
80
  function scanWorkspaceResources2(kernel, workspace) {
80
- return scan(kernel, workspace, () => kernel.environments.attachWorkspace(workspace));
81
+ return scan(kernel, workspace, () => kernel.environments.attachWorkspace(workspace), true);
81
82
  }
82
83
  function resourceIssues2(resources) {
83
84
  return scanIssues.get(resources) ?? [];
@@ -161,11 +162,13 @@ function tryReadResources(api) {
161
162
  return null;
162
163
  }
163
164
  }
164
- async function scan(kernel, workspace, attach) {
165
+ async function scan(kernel, workspace, attach, withContext) {
165
166
  const record = await readWorkspace2(kernel.store, workspace);
166
- const user = await userFiles(kernel);
167
+ const homeEnv = await attachHome(kernel);
168
+ const user = homeEnv?.files ?? null;
167
169
  const trusted = record !== null && await projectTrust2(kernel, record) === true;
168
- const attached = record !== null && classifyFileSupport2(kernel.environments.provider(record.target.kind)) === "available" ? attach() : null;
170
+ const provider = record === null ? undefined : kernel.environments.provider(record.target.kind);
171
+ const attached = classifyFileSupport2(provider) === "available" ? attach() : null;
169
172
  const env = attached === null ? null : trusted ? await attached : await attached.catch(() => null);
170
173
  const folder = env?.files ?? null;
171
174
  const project = trusted ? folder : null;
@@ -186,23 +189,11 @@ async function scan(kernel, workspace, attach) {
186
189
  message: `The ${item.scope} skill ${item.name} at ${item.location} is shadowed by the ${over.scope} one at ${over.location}.`,
187
190
  source: { plugin: "resources" }
188
191
  }));
189
- const contextFiles = [];
190
- if (user !== null && home !== null) {
191
- const content = await readText(user, ".nyte/AGENTS.md");
192
- if (content !== null)
193
- contextFiles.push({ path: join(home, ".nyte/AGENTS.md"), scope: "user", content });
194
- }
195
- if (folder !== null && root !== null)
196
- contextFiles.push(...await ancestorFiles(folder, root));
197
- if (folder !== null) {
198
- const found = await firstContext(folder, (name) => name);
199
- if (found !== null)
200
- contextFiles.push({
201
- path: root === null ? found.path : join(root, found.path),
202
- scope: "project",
203
- content: found.content
204
- });
205
- }
192
+ const contextFiles = withContext ? await findContextFiles(homeEnv === null || home === null ? null : {
193
+ files: homeEnv.files,
194
+ real: realPaths(kernel.environments.provider("local"), homeEnv),
195
+ home
196
+ }, env === null ? null : { files: env.files, real: realPaths(provider, env), root }) : [];
206
197
  const [userSystem, userAppend, projectSystem, projectAppend] = await Promise.all([
207
198
  user === null ? null : readText(user, ".nyte/SYSTEM.md"),
208
199
  user === null ? null : readText(user, ".nyte/APPEND_SYSTEM.md"),
@@ -228,7 +219,7 @@ async function scan(kernel, workspace, attach) {
228
219
  scanIssues.set(resources, issues);
229
220
  return resources;
230
221
  }
231
- function userFiles(kernel) {
222
+ function attachHome(kernel) {
232
223
  const state = kernel.workspaceState;
233
224
  if (state.home !== null)
234
225
  return state.home;
@@ -236,7 +227,7 @@ function userFiles(kernel) {
236
227
  const local = home === null ? undefined : kernel.environments.provider("local");
237
228
  if (home === null || local === undefined)
238
229
  return Promise.resolve(null);
239
- const attached = local.attach({ kind: "local", path: home }).then((env) => env.files);
230
+ const attached = local.attach({ kind: "local", path: home });
240
231
  state.home = attached;
241
232
  attached.catch(() => {
242
233
  if (state.home === attached)
@@ -342,24 +333,100 @@ function parseSkillMetadata(content, fallback, location, scope) {
342
333
  description: fields.get("description") ?? ""
343
334
  };
344
335
  }
345
- async function ancestorFiles(files, root) {
336
+ async function findContextFiles(user, folder) {
337
+ const root = folder?.root ?? null;
338
+ const [own, ancestors, project, shadowed] = await Promise.all([
339
+ user === null ? null : findContext(user, join(user.home, ".nyte"), "user"),
340
+ folder === null || root === null ? [] : ancestorContexts(folder, root),
341
+ folder === null ? null : findContext(folder, root, "project"),
342
+ folder === null || root === null ? null : findShadowedContext(folder, root).catch(() => null)
343
+ ]);
344
+ const seen = new Set;
345
+ return [own, ...ancestors, project].flatMap((found) => {
346
+ if (found === null || found.entry === shadowed || seen.has(found.real))
347
+ return [];
348
+ seen.add(found.real);
349
+ return [{ path: found.path, scope: found.scope, content: found.content }];
350
+ });
351
+ }
352
+ async function ancestorContexts(reader, root) {
346
353
  try {
347
- const found = await Promise.all(listAncestorPaths(root).map(async (directory) => {
348
- const context = await firstContext(files, (name) => join(directory, name));
349
- return context === null ? [] : [{ ...context, scope: "ancestor" }];
350
- }));
351
- return found.flat();
354
+ const found = await Promise.all(listAncestorPaths(root).map((directory) => findContext(reader, directory, "ancestor")));
355
+ return found.filter((context) => context !== null);
352
356
  } catch {
353
357
  return [];
354
358
  }
355
359
  }
356
- async function firstContext(files, at) {
357
- const read = await Promise.all(CONTEXT_NAMES.map(async (name) => {
358
- const path = at(name);
359
- const content = await readText(files, path);
360
- return content === null ? null : { path, content };
361
- }));
362
- return read.find((context) => context !== null) ?? null;
360
+ async function findContext(reader, directory, scope) {
361
+ const at = (name) => directory === null ? name : join(directory, name);
362
+ const read = await Promise.all(CONTEXT_NAMES.map(async (name) => ({ name, content: await readText(reader.files, at(name)) })));
363
+ const found = read.find((entry) => entry.content !== null);
364
+ if (found === undefined)
365
+ return null;
366
+ const path = at(found.name);
367
+ if (reader.real === null || directory === null)
368
+ return { path, scope, content: found.content, name: found.name, real: path, entry: path };
369
+ const [real, realDirectory, entry] = await Promise.all([
370
+ reader.real(path),
371
+ reader.real(directory),
372
+ reader.files.stat(path)
373
+ ]);
374
+ return {
375
+ path: real === null || entry?.kind === "symlink" ? path : join(directory, fileName(real)),
376
+ scope,
377
+ content: found.content,
378
+ name: found.name,
379
+ real: real ?? path,
380
+ entry: join(realDirectory ?? directory, found.name)
381
+ };
382
+ }
383
+ async function findShadowedContext(reader, root) {
384
+ const real = reader.real;
385
+ if (real === null)
386
+ return null;
387
+ const git = await findGitPaths(reader.files, root);
388
+ if (git === null)
389
+ return null;
390
+ const common = await real(git.common) ?? git.common;
391
+ const worktree = await real(git.repository) ?? git.repository;
392
+ const main = parentDirectory(common);
393
+ if (!worktree.startsWith(join(main, "")))
394
+ return null;
395
+ const mainGit = join(main, ".git");
396
+ if ((await real(mainGit) ?? mainGit) !== common)
397
+ return null;
398
+ const own = await findContext(reader, worktree, "ancestor");
399
+ return own === null ? null : join(main, own.name);
400
+ }
401
+ async function findGitPaths(files, root) {
402
+ for (const directory of [root, ...listAncestorPaths(root).toReversed()]) {
403
+ const dotGit = join(directory, ".git");
404
+ const found = await files.stat(dotGit);
405
+ if (found === null)
406
+ continue;
407
+ const text = found.kind === "directory" ? null : await readText(files, dotGit);
408
+ if (text === null) {
409
+ if (found.kind === "file")
410
+ continue;
411
+ return await files.stat(join(dotGit, "HEAD")) === null ? null : { repository: directory, common: dotGit };
412
+ }
413
+ const named = text.trim();
414
+ if (!named.startsWith("gitdir: "))
415
+ continue;
416
+ const gitDir = absolutePath(directory, named.slice("gitdir: ".length).trim());
417
+ if (await files.stat(join(gitDir, "HEAD")) === null)
418
+ return null;
419
+ const common = await readText(files, join(gitDir, "commondir"));
420
+ return {
421
+ repository: directory,
422
+ common: common === null ? gitDir : absolutePath(gitDir, common.trim())
423
+ };
424
+ }
425
+ return null;
426
+ }
427
+ function realPaths(provider, env) {
428
+ const realpath = provider?.realpath;
429
+ return realpath === undefined ? null : (path) => realpath(env, path);
363
430
  }
364
431
  async function listDirectChildren(files, directory, kinds) {
365
432
  const children = new Map;
@@ -432,5 +499,14 @@ function listAncestorPaths(root) {
432
499
  function join(directory, name) {
433
500
  return directory.endsWith("/") ? `${directory}${name}` : `${directory}/${name}`;
434
501
  }
502
+ function absolutePath(base, path) {
503
+ return resolvePath(null, ABSOLUTE.test(path) ? path : join(base, path));
504
+ }
505
+ function parentDirectory(path) {
506
+ return path.slice(0, path.lastIndexOf("/")) || "/";
507
+ }
508
+ function fileName(path) {
509
+ return path.slice(path.lastIndexOf("/") + 1);
510
+ }
435
511
 
436
512
  export { SKILL_PATHS2, scanResources2, dropScans2, scanWorkspaceResources2, resourceIssues2, resourcesPlugin2 };