@ai-matrx/agents 0.17.5 → 0.18.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,91 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.18.5
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/matrx-agents/v0.18.1..npm/matrx-agents/v0.18.5 -- apps/shared/matrx-agents`).
7
+ No source changes intended and no consumer action required.
8
+
9
+ ## 0.18.4
10
+
11
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
12
+ `git diff npm/matrx-agents/v0.18.1..npm/matrx-agents/v0.18.4 -- apps/shared/matrx-agents`).
13
+ No source changes intended and no consumer action required.
14
+
15
+ ## 0.18.3
16
+
17
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
18
+ `git diff npm/matrx-agents/v0.18.1..npm/matrx-agents/v0.18.3 -- apps/shared/matrx-agents`).
19
+ No source changes intended and no consumer action required.
20
+
21
+ ## 0.18.2
22
+
23
+ ### Fixed (independent verify #3 of the Source input, in `./sources/runtime`)
24
+
25
+ - Parts picked while a Source was still being cleaned survive the clean
26
+ version landing: a fresh manifest with new part ids carries the pick over by
27
+ page (`carryPickedParts`; the pick's pages are remembered on the draft as
28
+ `pickedParts`, so it also survives a reload), or clears it with a note when
29
+ the pages are unknown — never "0 characters · 4 of 21 parts".
30
+ - A web page being read has a card (link kept) from the moment the read
31
+ starts: `intake.beginWebPage(url)`; `addScrapedPage(page, pendingId)` settles
32
+ that card. A reload mid-read lands it through the web door.
33
+ - One state per card: `failCard` drops the stale measurement;
34
+ `sourceCardState` / `sourceCardMeasuredState` derive it once.
35
+ - One size everywhere: `sourceEntryChars` / `sourceCardChars`, and
36
+ `SourcePlanEntry.chars` / `SourcePlan.chars` (the budget keeps `sentChars`).
37
+ - A recording made in place (Voice Pad) lands as text but stays a Recording:
38
+ `intake.addRecordedText(text, name)` (kind "audio", its name kept; a reload
39
+ re-lands it from the kept text).
40
+ - Wording carried over from the web app's copy pass (R9): delivery hints, the
41
+ unreadable-file sentence, the too-large-to-restore note.
42
+
43
+ ### Consumer action
44
+
45
+ - matrx-frontend: show `sourceCardChars(card)` on the card, `plan.chars` /
46
+ `entry.chars` in the review, the state word from `sourceCardMeasuredState`;
47
+ wire the web picker's read start to `intake.beginWebPage` and pass the id to
48
+ `addScrapedPage`; send Voice Pad text through `intake.addRecordedText`.
49
+
50
+ ## 0.18.1
51
+
52
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
53
+ `git diff npm/matrx-agents/v0.17.5..npm/matrx-agents/v0.18.1 -- apps/shared/matrx-agents`).
54
+ No source changes intended and no consumer action required.
55
+
56
+ ## 0.18.0
57
+
58
+ ### Added
59
+
60
+ - `./sources/runtime` — the Source input's UI-free core (common-docs
61
+ `projects/unified-source-input/DESIGN.md` § "One core, many screens", item
62
+ USI-7), moved out of the web app: source-list reducers + selectors
63
+ (drafts, per-Source status, delivery / forms / parts / caps, host config:
64
+ allowed deliveries and max), `createSourceSetController` over an injected
65
+ store, draft storage, client and config; `createSourceIntake` (paste, web
66
+ page, YouTube, recording, upload, existing) with every door, the
67
+ organization gate and the wording injected; recovery (`resumeInterrupted`,
68
+ `continueAfterOrganization`, `lookAtFileCards`); THE review planner
69
+ `planSourceReview` (estimator injectable, default the measured 2.9
70
+ chars/token); `createSourcesClient` for `/sources/manifest`, `/sources/resolve`
71
+ and `/sources/parts/search` (always sent as organization-free reads) plus
72
+ `createFetchSourcesTransport` for clients without an API layer; the pure
73
+ rules `delivery`, `partsSearch`, `interrupted`, `fileSource`.
74
+ - `./sources/react` — `useSourceSet(adapter)`, `useSourceIntake`,
75
+ `useSourceRecovery`, `useSourcePartsSearch`.
76
+
77
+ ### Consumer action
78
+
79
+ - matrx-frontend: bind the adapter to Redux `instanceResources` + `wizardDraft`
80
+ in `features/resource-manager/source-input/useSourceSet.ts`, bind the intake
81
+ doors (sourcesApi, scraper, YouTube reader, transcription, associations
82
+ service, organization gate) in `useSourceIntake.ts`, the file-state read in
83
+ `useSourceRecovery.ts`, and the typed `apiPost` transport in
84
+ `sourceSetApi.ts`; delete the local `delivery.ts`, `partsSearch.ts`,
85
+ `interrupted.ts`, `fileSource.ts`, `useSourcePartsText.ts` and
86
+ `review/plan.ts`, importing them from `@ai-matrx/agents/sources/runtime`.
87
+ Other consumers: none — additive.
88
+
3
89
  ## 0.17.5
4
90
  ### Unreleased
5
91
 
package/README.md CHANGED
@@ -208,6 +208,41 @@ is hidden, never dead).
208
208
  `agx_get_list_full`, `agx_search`, `agx_resolve_agent_address` and
209
209
  `ues_get_bulk` (the star read).
210
210
 
211
+ ## The one Source input (`./sources`, `./sources/runtime`, `./sources/react`)
212
+
213
+ `./sources` is the wire contract (`SourceRef`, `SourceSet`, `SourceManifest`,
214
+ `ResolvedSourceSet`). `./sources/runtime` is the UI-free core every screen of
215
+ the Source input sits on — pure TypeScript, with every outside dependency
216
+ injected:
217
+
218
+ ```ts
219
+ import {
220
+ createSourceSetController,
221
+ createSourceIntake,
222
+ createSourcesClient,
223
+ createFetchSourcesTransport,
224
+ createMemorySourceSetStore,
225
+ planSourceReview,
226
+ } from "@ai-matrx/agents/sources/runtime";
227
+
228
+ const client = createSourcesClient(
229
+ createFetchSourcesTransport({ baseUrl, headers: async () => ({ Authorization: `Bearer ${token}` }) }),
230
+ );
231
+ const set = createSourceSetController({
232
+ store: createMemorySourceSetStore(), // or your own store adapter
233
+ client,
234
+ config: { defaultForm: "clean", deliveries: ["direct"], max: 5 },
235
+ });
236
+ const intake = createSourceIntake(set, { doors, ensureOrganization, /* … */ });
237
+ await intake.addPastedText(text, "Chapter 8 notes");
238
+ await set.manifest(); // sizes, forms, parts on each card
239
+ const plan = planSourceReview({ manifest, refs, base: set.toSourceSet(), modelWindowTokens, fallbackWindowTokens });
240
+ const grounded = await set.resolve();
241
+ ```
242
+
243
+ `./sources/react` binds it: `useSourceSet(adapter)`, `useSourceIntake(set, deps)`,
244
+ `useSourceRecovery(set, intake, runner, options)`, `useSourcePartsSearch(client, ref, query)`.
245
+
211
246
  ## Runtime support
212
247
 
213
248
  The package targets modern browsers, browser-based desktop shells,
@@ -215,7 +250,7 @@ extensions, Next.js client or server modules, and Node 20+. Its one runtime
215
250
  dependencies are `@ai-matrx/data` (the shared net-resilience + credentials
216
251
  layer), `@ai-matrx/design-system` (the picker's primitives) and
217
252
  `@ai-matrx/associations` (the per-user star chokepoint); `react >= 18`
218
- is an optional peer needed only by `./react` and `./catalog/react`. No entry
253
+ is an optional peer needed only by `./react`, `./sources/react` and `./catalog/react`. No entry
219
254
  point performs work at import time.
220
255
 
221
256
  ## Development