@mindstudio-ai/remy 0.1.321 → 0.1.323
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/dist/headless.js +14 -2
- package/dist/index.js +14 -2
- package/dist/prompt/skills/dataSources.md +9 -5
- package/package.json +1 -1
package/dist/headless.js
CHANGED
|
@@ -2334,11 +2334,23 @@ var bashTool = {
|
|
|
2334
2334
|
const maxLines = input.maxLines === 0 ? Infinity : input.maxLines || DEFAULT_MAX_LINES2;
|
|
2335
2335
|
const timeoutMs = input.timeout ? input.timeout * 1e3 : DEFAULT_TIMEOUT_MS;
|
|
2336
2336
|
return new Promise((resolve4) => {
|
|
2337
|
-
const child = spawn2("
|
|
2337
|
+
const child = spawn2("bash", ["-c", input.command], {
|
|
2338
2338
|
// Pinned rather than inherited. `undefined` here means "wherever the
|
|
2339
2339
|
// process happens to be", which is the project root only by luck.
|
|
2340
2340
|
cwd: input.cwd ? path7.resolve(PROJECT_ROOT, input.cwd) : PROJECT_ROOT,
|
|
2341
|
-
|
|
2341
|
+
// Output is rendered in a terminal view in the IDE, so ask tools for
|
|
2342
|
+
// color. The devbox image sets none of these — it declares only
|
|
2343
|
+
// WORKSPACE_DIR, LANG, LC_ALL, PIP_BREAK_SYSTEM_PACKAGES,
|
|
2344
|
+
// NPM_CONFIG_PREFIX and PATH — and a container gets no TERM unless
|
|
2345
|
+
// something sets it, so without TERM anything driving terminfo assumes
|
|
2346
|
+
// a dumb terminal. Same trio the sandbox's pty handler sets, for the
|
|
2347
|
+
// same reason; FORCE_COLOR alone only reaches the Node/chalk ecosystem.
|
|
2348
|
+
env: {
|
|
2349
|
+
...process.env,
|
|
2350
|
+
TERM: "xterm-256color",
|
|
2351
|
+
CLICOLOR: "1",
|
|
2352
|
+
FORCE_COLOR: "1"
|
|
2353
|
+
}
|
|
2342
2354
|
});
|
|
2343
2355
|
let output = "";
|
|
2344
2356
|
child.stdout.on("data", (chunk) => {
|
package/dist/index.js
CHANGED
|
@@ -3519,11 +3519,23 @@ var init_bash = __esm({
|
|
|
3519
3519
|
const maxLines = input.maxLines === 0 ? Infinity : input.maxLines || DEFAULT_MAX_LINES2;
|
|
3520
3520
|
const timeoutMs = input.timeout ? input.timeout * 1e3 : DEFAULT_TIMEOUT_MS;
|
|
3521
3521
|
return new Promise((resolve4) => {
|
|
3522
|
-
const child = spawn2("
|
|
3522
|
+
const child = spawn2("bash", ["-c", input.command], {
|
|
3523
3523
|
// Pinned rather than inherited. `undefined` here means "wherever the
|
|
3524
3524
|
// process happens to be", which is the project root only by luck.
|
|
3525
3525
|
cwd: input.cwd ? path7.resolve(PROJECT_ROOT, input.cwd) : PROJECT_ROOT,
|
|
3526
|
-
|
|
3526
|
+
// Output is rendered in a terminal view in the IDE, so ask tools for
|
|
3527
|
+
// color. The devbox image sets none of these — it declares only
|
|
3528
|
+
// WORKSPACE_DIR, LANG, LC_ALL, PIP_BREAK_SYSTEM_PACKAGES,
|
|
3529
|
+
// NPM_CONFIG_PREFIX and PATH — and a container gets no TERM unless
|
|
3530
|
+
// something sets it, so without TERM anything driving terminfo assumes
|
|
3531
|
+
// a dumb terminal. Same trio the sandbox's pty handler sets, for the
|
|
3532
|
+
// same reason; FORCE_COLOR alone only reaches the Node/chalk ecosystem.
|
|
3533
|
+
env: {
|
|
3534
|
+
...process.env,
|
|
3535
|
+
TERM: "xterm-256color",
|
|
3536
|
+
CLICOLOR: "1",
|
|
3537
|
+
FORCE_COLOR: "1"
|
|
3538
|
+
}
|
|
3527
3539
|
});
|
|
3528
3540
|
let output = "";
|
|
3529
3541
|
child.stdout.on("data", (chunk) => {
|
|
@@ -71,10 +71,10 @@ People are bad at describing their own data, and the more of it they have the wo
|
|
|
71
71
|
|
|
72
72
|
1. **Look before you promise.** `datasources inspect` over the store or the bucket: key shapes, counts and bytes by extension, size buckets, sampled heads with their JSON keys. Report it in the user's vocabulary: how many objects, how many formats, what is not documents, which parts nobody mentioned.
|
|
73
73
|
2. **Ask the questions only the user can answer**, as a form, and stop for them: what is in scope and what is not, what one document is (a file, a record, the latest version of a record), what counts as a duplicate, what to do with the low-value kinds, who holds the rights to anything third-party. Do not guess these; they decide what the mapper does.
|
|
74
|
-
3. **Shape it, if the file is not the document.** Write the mapper and `map test --dev` it over twenty real objects; read the outcomes back to the user as documents, metadata and skips with reasons. Adjust and re-run
|
|
74
|
+
3. **Shape it, if the file is not the document.** Write the mapper and `map test --dev` it over twenty real objects; read the outcomes back to the user as documents, metadata and skips with reasons. Adjust and re-run. When the outcomes read right, push a branch, `releases wait`, then `map deploy`: that build's mapper becomes the source's. Nothing is published.
|
|
75
75
|
4. **Sample before the whole thing.** `jobs start --limit 500` loads a slice cheaply; search it; fix the mapper; `remap`. A mistake on five hundred documents costs cents.
|
|
76
76
|
5. **Show the plan and get an explicit yes.** The plan is the bill: documents, chunks, cost per stage, storage, duration, and whether the corpus fits where the source lives. Present it, then `jobs approve`. If it answers `plan_requires_dedicated`, the size decision comes first: show the offering's price, get a yes, `infra provision`, `datasources move`, then approve.
|
|
77
|
-
6. **Run it, and read what came out.** `jobs status` for progress and the last failures; `jobs quarantine` for what the mapper skipped or failed on, by reason; fix,
|
|
77
|
+
6. **Run it, and read what came out.** `jobs status` for progress and the last failures; `jobs quarantine` for what the mapper skipped or failed on, by reason; fix, push, `map deploy`, `jobs replay`. Search works on the partial corpus throughout.
|
|
78
78
|
7. **Keep it current.** For a bucket, a cron method calling `Source.sync()`; for anything else, the same job re-run (unchanged objects cost nothing).
|
|
79
79
|
8. **Measure before you change anything.** A sample source and an eval set; compare versions and models with numbers, and ask before promoting.
|
|
80
80
|
|
|
@@ -191,14 +191,18 @@ The loop, in this order:
|
|
|
191
191
|
```bash
|
|
192
192
|
remy-admin datasources inspect --source archive --connector # look first
|
|
193
193
|
remy-admin datasources map test --source archive --connector --limit 20 --dev # the LOCAL mapper, real objects, nothing ingested
|
|
194
|
-
# fix, re-run, until the outcomes read right; then
|
|
195
|
-
remy-admin
|
|
194
|
+
# fix, re-run, until the outcomes read right; then push a branch and wait for its build
|
|
195
|
+
remy-admin releases wait
|
|
196
|
+
remy-admin datasources map deploy --source archive # that build's mapper becomes the source's
|
|
197
|
+
remy-admin datasources map test --source archive --connector --limit 20 # the active mapper, same objects
|
|
196
198
|
remy-admin datasources sync --source archive --wait # or jobs start
|
|
197
199
|
remy-admin datasources jobs quarantine <id> # what it skipped or failed on, by reason
|
|
198
|
-
remy-admin datasources jobs replay <id> --wait # after a fix
|
|
200
|
+
remy-admin datasources jobs replay <id> --wait # after a fix, push and map deploy: just those objects again
|
|
199
201
|
remy-admin datasources remap --source archive --wait # a changed mapper over every raw copy
|
|
200
202
|
```
|
|
201
203
|
|
|
204
|
+
A mapper runs on the platform, so the platform has to build it. Any push builds it, and a branch push is a private preview build, which is all a mapper needs. `map deploy` then makes that build's mapper the source's active one: jobs, syncs and `add()` run it from then on, whether or not the app has ever been published. Publishing to main activates the mapper main declares as well, so merge the branch before you publish. `jobs start` refuses with `mapper_not_deployed` while the dev session declares a mapper that is not yet active, because the job would otherwise load the raw records as documents.
|
|
205
|
+
|
|
202
206
|
`map test --dev` needs the dev session running (`npx mindstudio dev`); it runs the mapper from local source through the tunnel and prints every outcome with markdown previews. The plan of a mapped job records the mapper's outcome mix on its sample; a run whose skip share climbs past twice that pauses with `pauseReason: 'skips'` for a look at the quarantine. `remap` reads the platform's own raw copies — no origin traffic — skips unchanged markdown by hash, and supersedes changed documents, so a metadata tweak on a million-document source costs frames and little else. `externalId` is the identity everything replaces by; choose it deliberately (the record's stable id, never the key of a file that gets rewritten in place).
|
|
203
207
|
|
|
204
208
|
## Dedicated capacity
|