@mulmoclaude/core 4.1.0 → 4.1.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.
- package/assets/helps/collection-skills.md +19 -0
- package/assets/helps/error-recovery.md +63 -0
- package/dist/collection/registry/server/index.cjs +1 -1
- package/dist/collection/registry/server/index.js +1 -1
- package/dist/collection/server/index.cjs +3 -1
- package/dist/collection/server/index.js +2 -2
- package/dist/collection/server/manageTool.d.ts +29 -0
- package/dist/collection-watchers/index.cjs +1 -1
- package/dist/collection-watchers/index.js +1 -1
- package/dist/feeds/server/index.cjs +1 -1
- package/dist/feeds/server/index.js +1 -1
- package/dist/google/index.js +2 -2
- package/dist/google/index.js.map +1 -1
- package/dist/{server-dijB4BYv.js → server-L12n8We3.js} +211 -10
- package/dist/{server-dijB4BYv.js.map → server-L12n8We3.js.map} +1 -1
- package/dist/{server-DSrRdPvf.cjs → server-meS6kjBN.cjs} +221 -8
- package/dist/{server-DSrRdPvf.cjs.map → server-meS6kjBN.cjs.map} +1 -1
- package/package.json +1 -1
|
@@ -960,6 +960,25 @@ records through **`manageCollection`**, not raw file I/O:
|
|
|
960
960
|
`mode: "merge"` with a partial row (`{ id, <changed fields> }`) when
|
|
961
961
|
updating — the default upsert replaces the WHOLE record and would erase
|
|
962
962
|
every optional field the row omits.
|
|
963
|
+
- **Rows a script generated — `putItems` with `itemsFile`.** When the rows
|
|
964
|
+
already exist as data rather than in your head (a generated schedule, an
|
|
965
|
+
imported set — anything past a few dozen records), have the script write
|
|
966
|
+
them to a JSON file **under the workspace** and pass its **absolute** path as
|
|
967
|
+
`itemsFile` instead of `items`. The host reads the file, so the rows never
|
|
968
|
+
pass through your context: a 540-row batch is one short tool call, not 80 KB
|
|
969
|
+
you transcribe. The rules:
|
|
970
|
+
- `items` and `itemsFile` are mutually exclusive — passing both is refused,
|
|
971
|
+
not merged.
|
|
972
|
+
- The path must be **absolute** (the tool runs in the host's server process,
|
|
973
|
+
whose working directory is not yours) and **inside the workspace** — write
|
|
974
|
+
the generated file there rather than to a system temp dir. It must be a real
|
|
975
|
+
file, not a symlink.
|
|
976
|
+
- The file must hold a **non-empty JSON array of objects**, at most 8 MiB.
|
|
977
|
+
- One call writes at most **1000 rows** — over that it is refused whole,
|
|
978
|
+
with nothing written, so split the file and call again.
|
|
979
|
+
|
|
980
|
+
Everything else is identical: same per-row validation, same `mode`, same
|
|
981
|
+
`{ written, rejected }` result.
|
|
963
982
|
- **Read / list — `getItems`.** The only way to see host-computed `derived` /
|
|
964
983
|
`toggle` / `embed` values (the stored JSON never contains them). Pass `ids`
|
|
965
984
|
/ `fields` on large collections to keep the result small — e.g.
|
|
@@ -1008,6 +1008,69 @@ Do NOT tell the user to re-check the spelling in `.env`, add the key
|
|
|
1008
1008
|
again, or move it elsewhere; the file is already correct, and it is being
|
|
1009
1009
|
read. The conflict is the whole problem.
|
|
1010
1010
|
|
|
1011
|
+
## A `putItems` batch is too large to pass inline — use `itemsFile`, never the MCP bridge
|
|
1012
|
+
|
|
1013
|
+
### Symptoms
|
|
1014
|
+
|
|
1015
|
+
- You generated records with a script (a month of booking slots, an imported
|
|
1016
|
+
CSV, anything past a few dozen rows) and the only way you can see to store
|
|
1017
|
+
them is to write every object into `manageCollection`'s `items` argument.
|
|
1018
|
+
- You start looking for the collection's data directory on disk, or for a way
|
|
1019
|
+
to hand the file to the tool.
|
|
1020
|
+
- The next step that suggests itself is spawning `server/mcp/bridge.mjs` (or
|
|
1021
|
+
the host's MCP server) yourself and speaking JSON-RPC to it from a script.
|
|
1022
|
+
|
|
1023
|
+
### Cause
|
|
1024
|
+
|
|
1025
|
+
`items` takes the rows inline, so a 540-row batch means writing ~80 KB of JSON
|
|
1026
|
+
token by token — even when a script already produced exactly that JSON as a
|
|
1027
|
+
file. The judgement that the batch cannot go through `items` is correct; only
|
|
1028
|
+
the workaround is wrong.
|
|
1029
|
+
|
|
1030
|
+
### Fix
|
|
1031
|
+
|
|
1032
|
+
Pass the file instead. `putItems` accepts **`itemsFile`** — an absolute path to
|
|
1033
|
+
a JSON file holding the array of record objects, read by the host:
|
|
1034
|
+
|
|
1035
|
+
```jsonc
|
|
1036
|
+
{ "action": "putItems", "slug": "slots", "mode": "create",
|
|
1037
|
+
"itemsFile": "/absolute/path/to/generated-slots.json" }
|
|
1038
|
+
```
|
|
1039
|
+
|
|
1040
|
+
Write the generated file **under the workspace**. Paths outside it are refused:
|
|
1041
|
+
the host reads this file on your behalf, so an unconstrained path would let the
|
|
1042
|
+
tool reach host files you cannot otherwise see. Under a sandbox your workspace
|
|
1043
|
+
path is translated to the host's automatically — you pass the path you wrote to.
|
|
1044
|
+
|
|
1045
|
+
Rules that make it fail cleanly rather than silently:
|
|
1046
|
+
|
|
1047
|
+
- **Absolute paths only.** The tool runs in the host's SERVER process, whose
|
|
1048
|
+
working directory is not yours; a relative path is refused rather than
|
|
1049
|
+
resolved against some unrelated directory.
|
|
1050
|
+
- **Inside the workspace only**, and **not a symlink** — pass the real path of a
|
|
1051
|
+
regular file. Symlinks are refused rather than followed, contained or not.
|
|
1052
|
+
- **`items` or `itemsFile`, never both** — passing both is refused, not merged.
|
|
1053
|
+
- **1000 rows per call, max**, and the file itself at most 8 MiB. Over either,
|
|
1054
|
+
the call is refused WHOLE with nothing written; split the file and call again,
|
|
1055
|
+
so you never meet a half-filled collection.
|
|
1056
|
+
|
|
1057
|
+
Reading the refusal you got:
|
|
1058
|
+
|
|
1059
|
+
| Message | What it means |
|
|
1060
|
+
| --- | --- |
|
|
1061
|
+
| `must be an ABSOLUTE path` | You passed a relative path. Pass the full one. |
|
|
1062
|
+
| `must be inside the workspace` | The file is outside the workspace (or a symlink out of it). Regenerate it under the workspace. |
|
|
1063
|
+
| `is a symbolic link` | Symlinks are never followed. Pass the real path. |
|
|
1064
|
+
| `changed while it was being opened` | The file was replaced mid-call. Finish writing it, then call putItems. |
|
|
1065
|
+
| `grew while it was being read` | The file was still being written. Wait for the script to finish, then call putItems. |
|
|
1066
|
+
| `could not read \`itemsFile\`` | The host cannot see that path — the usual cause is a file written to a temp dir outside the mount. Write it under the workspace. |
|
|
1067
|
+
| `is not a regular file` | The path is a directory, device, or fifo. |
|
|
1068
|
+
| `could not be read as JSON` | The file exists and was read, but does not parse. This is YOUR file's shape, not a host problem — check the script that wrote it (a truncated write, a trailing comma, log output mixed into the file). |
|
|
1069
|
+
| `must hold a non-empty JSON array of record objects` | It parsed, but is `[]`, an object, or an array of scalars. The file must be `[{…}, {…}]` — the same row objects you would have passed as `items`. |
|
|
1070
|
+
|
|
1071
|
+
Do NOT spawn the MCP bridge yourself. A hand-written JSON-RPC client fails
|
|
1072
|
+
invisibly and can leave a partially written collection that nothing reports.
|
|
1073
|
+
|
|
1011
1074
|
## A tool your own instructions describe returns "No such tool available"
|
|
1012
1075
|
|
|
1013
1076
|
### Symptoms
|
|
@@ -6,7 +6,7 @@ const require_relPath = require("../../../relPath-CTAjGdCL.cjs");
|
|
|
6
6
|
const require_utils_fetch = require("../../../utils/fetch.cjs");
|
|
7
7
|
const require_discovery = require("../../../discovery-B9EESjHP.cjs");
|
|
8
8
|
const require_templatePath = require("../../../templatePath-27vUZowm.cjs");
|
|
9
|
-
const require_server = require("../../../server-
|
|
9
|
+
const require_server = require("../../../server-meS6kjBN.cjs");
|
|
10
10
|
const require_skill_bridge_index = require("../../../skill-bridge/index.cjs");
|
|
11
11
|
const require_types = require("../../../types-CNqkLT4M.cjs");
|
|
12
12
|
let node_fs = require("node:fs");
|
|
@@ -4,7 +4,7 @@ import { n as toPosixRelPath } from "../../../relPath-DW8MC8VO.js";
|
|
|
4
4
|
import { fetchWithTimeout } from "../../../utils/fetch.js";
|
|
5
5
|
import { $ as collectionsRegistriesConfigPath, G as safeRecordId, ct as projectSkillsDir, mt as skillsStagingDir, nt as getWorkspaceRoot, ot as log, r as loadCollection, s as CollectionSchemaZ, t as acceptParsedSchema } from "../../../discovery-D88x2DmW.js";
|
|
6
6
|
import { t as isSafeActionTemplatePath } from "../../../templatePath-k_WNbL_Q.js";
|
|
7
|
-
import {
|
|
7
|
+
import { v as ONE_SECOND_MS } from "../../../server-L12n8We3.js";
|
|
8
8
|
import { claudeSkillDir, dataSkillDir, mirrorSkillWrite } from "../../../skill-bridge/index.js";
|
|
9
9
|
import { n as parseRegistryIndex, r as isRecord, t as OFFICIAL_REGISTRY_NAME } from "../../../types-BKVZrtyc.js";
|
|
10
10
|
import { readFileSync } from "node:fs";
|
|
@@ -3,7 +3,7 @@ const require_root = require("../../root-rPH6FGDT.cjs");
|
|
|
3
3
|
const require_itemId = require("../../itemId-Dzrr3vs5.cjs");
|
|
4
4
|
const require_discovery = require("../../discovery-B9EESjHP.cjs");
|
|
5
5
|
const require_templatePath = require("../../templatePath-27vUZowm.cjs");
|
|
6
|
-
const require_server = require("../../server-
|
|
6
|
+
const require_server = require("../../server-meS6kjBN.cjs");
|
|
7
7
|
exports.APP_MANIFEST_FILE = require_discovery.APP_MANIFEST_FILE;
|
|
8
8
|
exports.BackendUnavailableError = require_discovery.BackendUnavailableError;
|
|
9
9
|
exports.COLLECTION_ROOT_REQUIRED = require_discovery.COLLECTION_ROOT_REQUIRED;
|
|
@@ -12,6 +12,8 @@ exports.CollectionQueryZ = require_discovery.CollectionQueryZ;
|
|
|
12
12
|
exports.CollectionSchemaZ = require_discovery.CollectionSchemaZ;
|
|
13
13
|
exports.DEFAULT_QUERY_ROWS = require_discovery.DEFAULT_QUERY_ROWS;
|
|
14
14
|
exports.MAX_CSV_ROWS = require_discovery.MAX_CSV_ROWS;
|
|
15
|
+
exports.MAX_ITEMS_FILE_BYTES = require_server.MAX_ITEMS_FILE_BYTES;
|
|
16
|
+
exports.MAX_PUT_ITEMS = require_server.MAX_PUT_ITEMS;
|
|
15
17
|
exports.MAX_QUERY_ROWS = require_discovery.MAX_QUERY_ROWS;
|
|
16
18
|
exports.MAX_RECORD_ISSUES = require_server.MAX_RECORD_ISSUES;
|
|
17
19
|
exports.MAX_SCHEMA_ISSUES = require_server.MAX_SCHEMA_ISSUES;
|
|
@@ -2,5 +2,5 @@ import { t as canonicalRoot } from "../../root-BMroU_mB.js";
|
|
|
2
2
|
import { N as COMPUTED_TYPES } from "../../itemId-DfTm08jm.js";
|
|
3
3
|
import { A as readItem, B as SCHEMA_FILE, C as CollectionQueryZ, D as generateItemId, E as deleteItem, F as loadAppManifest, G as safeRecordId, H as itemFilePath, I as parseAppManifest, J as isBackendUnavailable, K as safeSlugName, L as sharedItemsPath, M as writeItem, N as APP_MANIFEST_FILE, O as isRegularFile, P as appManifestReason, Q as collectionChangePayload, R as pageFromFullRead, S as compileJsonlQuery, T as MAX_QUERY_ROWS, U as resolveDataDir, V as isContainedInRoot, W as resolveTemplatePath, Y as COLLECTION_ROOT_REQUIRED, Z as collectionChangeKey, _ as dedupeByRecordId, a as toDetail, at as localCollectionKey, d as storeFor, dt as setFirestoreAccessor, et as configureCollectionHost, ft as setSharedCollectionsSupport, g as decodeCsvRecordId, h as csvRowToItem, i as resolvePrimaryField, j as resolveCreateItemId, k as listItems, l as collectionWritable, lt as publishCollectionChange, n as discoverCollections, nt as getWorkspaceRoot, o as toSummary, ot as log, p as MAX_CSV_ROWS, pt as sharedCollectionChangePayload, q as BackendUnavailableError, r as loadCollection, rt as hostSupportsSharedCollections, s as CollectionSchemaZ, st as peekWorkspaceRoot, t as acceptParsedSchema, tt as firestoreHandle, u as readOnlyRefusal, ut as setCollectionChangePublisher, v as encodeCsvRecordId, w as DEFAULT_QUERY_ROWS, x as compileCsvQuery, y as normalizeCsvValue, z as projectItemFields } from "../../discovery-D88x2DmW.js";
|
|
4
4
|
import { i as isSafeTemplatePath, n as isSafeCustomViewI18nPath, r as isSafeCustomViewPath, t as isSafeActionTemplatePath } from "../../templatePath-k_WNbL_Q.js";
|
|
5
|
-
import { A as
|
|
6
|
-
export { APP_MANIFEST_FILE, BackendUnavailableError, COLLECTION_ROOT_REQUIRED, COMPUTED_TYPES, CollectionQueryZ, CollectionSchemaZ, DEFAULT_QUERY_ROWS, MAX_CSV_ROWS, MAX_QUERY_ROWS, MAX_RECORD_ISSUES, MAX_SCHEMA_ISSUES, MAX_UNSELECTIVE_ITEMS, SCHEMA_FILE, STORE_UNREADABLE, acceptParsedSchema, advanceTriggerDate, appManifestReason, applyMutateAction, buildActionSeedPrompt, buildCollectionActionSeedPrompt, buildWorkspaceOntology, canonicalRoot, collectionChangeKey, collectionChangePayload, collectionWritable, compileCsvQuery, compileJsonlQuery, compileRecordZ, computeCollectionIcon, computeSuccessor, configureCollectionHost, csvRowToItem, daysInMonth, decodeCsvRecordId, dedupeByRecordId, deleteCollection, deleteCollectionRefusalMessage, deleteCustomView, deleteItem, discoverCollections, encodeCsvRecordId, enrichItems, firestoreHandle, firstMutateParamProblem, formatCivil, generateItemId, getWorkspaceRoot, hostSupportsSharedCollections, isBackendUnavailable, isContainedInRoot, isRegularFile, isSafeActionTemplatePath, isSafeCustomViewI18nPath, isSafeCustomViewPath, isSafeTemplatePath, isTriggerDue, itemFilePath, listItems, loadAppManifest, loadCollection, localCollectionKey, log, makeManageCollectionTool, maybeSpawnSuccessor, normalizeCsvValue, pageFromFullRead, parseAppManifest, parseCivil, peekWorkspaceRoot, projectItemFields, promptPathsFor, publishCollectionChange, readCustomViewHtml, readCustomViewI18n, readItem, readOnlyRefusal, readSkillTemplate, recordFieldProblem, resolveCreateItemId, resolveDataDir, resolveEvery, resolvePrimaryField, resolveTemplatePath, runCollectionQuery, runQueryOverRows, safeRecordId, safeSlugName, schemaRelations, setCollectionChangePublisher, setFirestoreAccessor, setSharedCollectionsSupport, sharedCollectionChangePayload, sharedItemsPath, storeFor, successorId, toDetail, toSummary, validateCollectionRecords, validateRecordObject, writeItem };
|
|
5
|
+
import { A as runCollectionQuery, C as firstMutateParamProblem, D as validateRecordObject, E as validateCollectionRecords, F as promptPathsFor, I as readCustomViewHtml, L as readCustomViewI18n, M as runQueryOverRows, N as buildActionSeedPrompt, O as compileRecordZ, P as buildCollectionActionSeedPrompt, R as readSkillTemplate, S as applyMutateAction, T as STORE_UNREADABLE, _ as successorId, a as makeManageCollectionTool, b as buildWorkspaceOntology, c as deleteCollectionRefusalMessage, d as daysInMonth, f as formatCivil, g as resolveEvery, h as parseCivil, i as MAX_UNSELECTIVE_ITEMS, j as enrichItems, k as recordFieldProblem, l as advanceTriggerDate, m as maybeSpawnSuccessor, n as MAX_PUT_ITEMS, o as deleteCustomView, p as isTriggerDue, r as MAX_SCHEMA_ISSUES, s as deleteCollection, t as MAX_ITEMS_FILE_BYTES, u as computeSuccessor, w as MAX_RECORD_ISSUES, x as schemaRelations, y as computeCollectionIcon } from "../../server-L12n8We3.js";
|
|
6
|
+
export { APP_MANIFEST_FILE, BackendUnavailableError, COLLECTION_ROOT_REQUIRED, COMPUTED_TYPES, CollectionQueryZ, CollectionSchemaZ, DEFAULT_QUERY_ROWS, MAX_CSV_ROWS, MAX_ITEMS_FILE_BYTES, MAX_PUT_ITEMS, MAX_QUERY_ROWS, MAX_RECORD_ISSUES, MAX_SCHEMA_ISSUES, MAX_UNSELECTIVE_ITEMS, SCHEMA_FILE, STORE_UNREADABLE, acceptParsedSchema, advanceTriggerDate, appManifestReason, applyMutateAction, buildActionSeedPrompt, buildCollectionActionSeedPrompt, buildWorkspaceOntology, canonicalRoot, collectionChangeKey, collectionChangePayload, collectionWritable, compileCsvQuery, compileJsonlQuery, compileRecordZ, computeCollectionIcon, computeSuccessor, configureCollectionHost, csvRowToItem, daysInMonth, decodeCsvRecordId, dedupeByRecordId, deleteCollection, deleteCollectionRefusalMessage, deleteCustomView, deleteItem, discoverCollections, encodeCsvRecordId, enrichItems, firestoreHandle, firstMutateParamProblem, formatCivil, generateItemId, getWorkspaceRoot, hostSupportsSharedCollections, isBackendUnavailable, isContainedInRoot, isRegularFile, isSafeActionTemplatePath, isSafeCustomViewI18nPath, isSafeCustomViewPath, isSafeTemplatePath, isTriggerDue, itemFilePath, listItems, loadAppManifest, loadCollection, localCollectionKey, log, makeManageCollectionTool, maybeSpawnSuccessor, normalizeCsvValue, pageFromFullRead, parseAppManifest, parseCivil, peekWorkspaceRoot, projectItemFields, promptPathsFor, publishCollectionChange, readCustomViewHtml, readCustomViewI18n, readItem, readOnlyRefusal, readSkillTemplate, recordFieldProblem, resolveCreateItemId, resolveDataDir, resolveEvery, resolvePrimaryField, resolveTemplatePath, runCollectionQuery, runQueryOverRows, safeRecordId, safeSlugName, schemaRelations, setCollectionChangePublisher, setFirestoreAccessor, setSharedCollectionsSupport, sharedCollectionChangePayload, sharedItemsPath, storeFor, successorId, toDetail, toSummary, validateCollectionRecords, validateRecordObject, writeItem };
|
|
@@ -5,6 +5,17 @@ import { DiscoveryOptions } from './discovery';
|
|
|
5
5
|
export declare const MAX_UNSELECTIVE_ITEMS = 200;
|
|
6
6
|
/** Cap the rejected-schema issue list so a deeply-broken schema can't flood the result. */
|
|
7
7
|
export declare const MAX_SCHEMA_ISSUES = 20;
|
|
8
|
+
/** Cap the rows one putItems call may write. `putOneItem` validates and
|
|
9
|
+
* writes one record at a time, so a large `itemsFile` holds the tool call
|
|
10
|
+
* open for minutes. Over the cap the call is refused WHOLE — a truncating
|
|
11
|
+
* write that reported success would leave a half-filled collection nobody
|
|
12
|
+
* knows is half-filled. */
|
|
13
|
+
export declare const MAX_PUT_ITEMS = 1000;
|
|
14
|
+
/** Refuse an `itemsFile` larger than this, from `stat` and before any read.
|
|
15
|
+
* The row cap alone cannot bound the work: the file has to be read and parsed
|
|
16
|
+
* WHOLE before there are rows to count, so a huge blob is paid for in full
|
|
17
|
+
* first. 8 MiB is far past what 1000 records need and far short of trouble. */
|
|
18
|
+
export declare const MAX_ITEMS_FILE_BYTES: number;
|
|
8
19
|
/** Workspace-targeting overrides, threaded to every collections call.
|
|
9
20
|
* Production: `{}` (the configured collection host's workspace).
|
|
10
21
|
* Tests: a tmpdir + empty user skills dir. `refreshAfterWrite` is the
|
|
@@ -44,6 +55,20 @@ export type ManageCollectionDeps = DiscoveryOptions & {
|
|
|
44
55
|
* returning null, because the doc variant is a statement the host makes, not
|
|
45
56
|
* something the package should infer. */
|
|
46
57
|
stagedSkillAuthoring?: boolean | undefined;
|
|
58
|
+
/** Where the workspace is mounted INSIDE this host's agent sandbox
|
|
59
|
+
* (MulmoClaude's `CONTAINER_WORKSPACE_PATH`, `/home/node/mulmoclaude`).
|
|
60
|
+
*
|
|
61
|
+
* Only `putItems`' `itemsFile` needs it, and it needs it badly: a sandboxed
|
|
62
|
+
* agent's absolute paths are CONTAINER paths, while this tool body runs on
|
|
63
|
+
* the host. Read verbatim, `/home/node/mulmoclaude/rows.json` is ENOENT on
|
|
64
|
+
* every host whose workspace is not literally that directory — i.e. all of
|
|
65
|
+
* them. Given this, the prefix is translated back to the workspace root, so
|
|
66
|
+
* the path the agent wrote to and the file the host reads are the same bytes.
|
|
67
|
+
*
|
|
68
|
+
* Omitted (a host with no sandbox, or one that mounts the workspace at its
|
|
69
|
+
* real path), absolute paths are used as given. Binding it is harmless when
|
|
70
|
+
* the sandbox is off — the prefix simply never appears. */
|
|
71
|
+
sandboxWorkspacePath?: string | undefined;
|
|
47
72
|
};
|
|
48
73
|
export declare function makeManageCollectionTool(deps?: ManageCollectionDeps): {
|
|
49
74
|
definition: {
|
|
@@ -82,6 +107,10 @@ export declare function makeManageCollectionTool(deps?: ManageCollectionDeps): {
|
|
|
82
107
|
};
|
|
83
108
|
description: string;
|
|
84
109
|
};
|
|
110
|
+
itemsFile: {
|
|
111
|
+
type: string;
|
|
112
|
+
description: string;
|
|
113
|
+
};
|
|
85
114
|
mode: {
|
|
86
115
|
type: string;
|
|
87
116
|
enum: string[];
|
|
@@ -4,7 +4,7 @@ const require_itemId = require("../itemId-Dzrr3vs5.cjs");
|
|
|
4
4
|
const require_promptSafety = require("../promptSafety-CuczAN9d.cjs");
|
|
5
5
|
require("../collection/index.cjs");
|
|
6
6
|
const require_discovery = require("../discovery-B9EESjHP.cjs");
|
|
7
|
-
const require_server = require("../server-
|
|
7
|
+
const require_server = require("../server-meS6kjBN.cjs");
|
|
8
8
|
const require_notifier = require("../notifier-DZJj0sOh.cjs");
|
|
9
9
|
let node_fs_promises = require("node:fs/promises");
|
|
10
10
|
//#region src/collection-watchers/config.ts
|
|
@@ -3,7 +3,7 @@ import { B as fieldText, x as isValidCollectionName } from "../itemId-DfTm08jm.j
|
|
|
3
3
|
import { E as whenMatches, f as itemIsDone } from "../promptSafety-CJ-sC1pX.js";
|
|
4
4
|
import "../collection/index.js";
|
|
5
5
|
import { H as itemFilePath, Q as collectionChangePayload, d as storeFor, lt as publishCollectionChange, n as discoverCollections, pt as sharedCollectionChangePayload, r as loadCollection, st as peekWorkspaceRoot, tt as firestoreHandle } from "../discovery-D88x2DmW.js";
|
|
6
|
-
import {
|
|
6
|
+
import { m as maybeSpawnSuccessor, p as isTriggerDue } from "../server-L12n8We3.js";
|
|
7
7
|
import { d as publish, m as updateForPlugin, n as clear, s as listAll } from "../notifier-DhnwR82U.js";
|
|
8
8
|
import { access } from "node:fs/promises";
|
|
9
9
|
//#region src/collection-watchers/config.ts
|
|
@@ -5,7 +5,7 @@ const require_root = require("../../root-rPH6FGDT.cjs");
|
|
|
5
5
|
const require_itemId = require("../../itemId-Dzrr3vs5.cjs");
|
|
6
6
|
const require_project = require("../../project-C1ep9pvo.cjs");
|
|
7
7
|
const require_discovery = require("../../discovery-B9EESjHP.cjs");
|
|
8
|
-
const require_server = require("../../server-
|
|
8
|
+
const require_server = require("../../server-meS6kjBN.cjs");
|
|
9
9
|
const require_feeds_paths = require("../paths.cjs");
|
|
10
10
|
const require_ingestTypes = require("../../ingestTypes-B4XfrUoq.cjs");
|
|
11
11
|
const require_notifier = require("../../notifier-DZJj0sOh.cjs");
|
|
@@ -3,7 +3,7 @@ import { t as canonicalRoot } from "../../root-BMroU_mB.js";
|
|
|
3
3
|
import { F as INGEST_KINDS, P as FEED_SCHEDULES } from "../../itemId-DfTm08jm.js";
|
|
4
4
|
import { t as mergeIntoExisting } from "../../project-B0j_Vf_Q.js";
|
|
5
5
|
import { K as safeSlugName, U as resolveDataDir, _t as createHostSlot, d as storeFor, gt as createForwardingLogger, k as listItems, n as discoverCollections } from "../../discovery-D88x2DmW.js";
|
|
6
|
-
import {
|
|
6
|
+
import { F as promptPathsFor, P as buildCollectionActionSeedPrompt, R as readSkillTemplate } from "../../server-L12n8We3.js";
|
|
7
7
|
import { FEEDS_DIR, feedDir, feedStatePath, feedsRoot, ingestStateDir, ingestStatePath } from "../paths.js";
|
|
8
8
|
import { n as DEFAULT_FEED_MAX_ITEMS, r as isFeedSchedule, t as AGENT_INGEST_KIND } from "../../ingestTypes-B312BwXg.js";
|
|
9
9
|
import { d as publish, n as clear } from "../../notifier-DhnwR82U.js";
|
package/dist/google/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { t as mulmoConfigDir } from "../paths-CkJxNZ7T.js";
|
|
|
9
9
|
import { promises } from "node:fs";
|
|
10
10
|
import path, { join } from "node:path";
|
|
11
11
|
import { randomBytes, randomUUID } from "node:crypto";
|
|
12
|
-
import { constants, copyFile, mkdir, open, readFile, readdir, rm, stat, unlink } from "node:fs/promises";
|
|
12
|
+
import { constants as constants$1, copyFile, mkdir, open, readFile, readdir, rm, stat, unlink } from "node:fs/promises";
|
|
13
13
|
import { homedir } from "node:os";
|
|
14
14
|
import { MISSED_RUN_POLICIES, SCHEDULE_TYPES } from "@receptron/task-scheduler";
|
|
15
15
|
import http from "node:http";
|
|
@@ -148,7 +148,7 @@ async function migrateLegacyTokenFile(home) {
|
|
|
148
148
|
if (!await fileExists(legacy)) return;
|
|
149
149
|
await mkdir(path.dirname(current), { recursive: true });
|
|
150
150
|
try {
|
|
151
|
-
await copyFile(legacy, current, constants.COPYFILE_EXCL);
|
|
151
|
+
await copyFile(legacy, current, constants$1.COPYFILE_EXCL);
|
|
152
152
|
} catch {
|
|
153
153
|
return;
|
|
154
154
|
}
|