@mulmoclaude/core 5.6.0 → 5.7.0
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 +1 -1
- package/assets/helps/error-recovery.md +25 -1
- package/assets/helps/google-calendar-collection.md +8 -3
- package/assets/helps/index.md +3 -3
- package/assets/helps/sandbox.md +1 -1
- package/dist/collection/core/calendarGrid.d.ts +24 -2
- package/dist/collection/index.cjs +5 -2
- package/dist/collection/index.js +3 -3
- package/dist/collection/registry/server/index.cjs +2 -2
- package/dist/collection/registry/server/index.js +2 -2
- package/dist/collection/server/index.cjs +3 -3
- package/dist/collection/server/index.js +3 -3
- package/dist/collection-watchers/index.cjs +4 -4
- package/dist/collection-watchers/index.js +4 -4
- package/dist/{discovery-B79IxEM6.cjs → discovery-CwBXvtyn.cjs} +2 -2
- package/dist/{discovery-B79IxEM6.cjs.map → discovery-CwBXvtyn.cjs.map} +1 -1
- package/dist/{discovery-DIGau7M8.js → discovery-XoYJI2Ot.js} +2 -2
- package/dist/{discovery-DIGau7M8.js.map → discovery-XoYJI2Ot.js.map} +1 -1
- package/dist/feeds/index.cjs +2 -2
- package/dist/feeds/index.js +2 -2
- package/dist/feeds/server/index.cjs +4 -4
- package/dist/feeds/server/index.js +4 -4
- package/dist/google/index.cjs +2 -2
- package/dist/google/index.js +2 -2
- package/dist/{ingestTypes-GkG7bJdB.js → ingestTypes-Bs31Xt5c.js} +2 -2
- package/dist/{ingestTypes-GkG7bJdB.js.map → ingestTypes-Bs31Xt5c.js.map} +1 -1
- package/dist/{ingestTypes-DsVH9BYy.cjs → ingestTypes-DS9HiR2I.cjs} +2 -2
- package/dist/{ingestTypes-DsVH9BYy.cjs.map → ingestTypes-DS9HiR2I.cjs.map} +1 -1
- package/dist/{itemId-4P9S_ehz.js → itemId-C9s-Jd5s.js} +58 -23
- package/dist/{itemId-4P9S_ehz.js.map → itemId-C9s-Jd5s.js.map} +1 -1
- package/dist/{itemId-CGT2J7YK.cjs → itemId-CVrNibwT.cjs} +75 -22
- package/dist/{itemId-CGT2J7YK.cjs.map → itemId-CVrNibwT.cjs.map} +1 -1
- package/dist/{promptSafety-BpBTh5xO.js → promptSafety-B5uGroik.js} +2 -2
- package/dist/{promptSafety-BpBTh5xO.js.map → promptSafety-B5uGroik.js.map} +1 -1
- package/dist/{promptSafety-caJWd1ZQ.cjs → promptSafety-BGV1wrE6.cjs} +2 -2
- package/dist/{promptSafety-caJWd1ZQ.cjs.map → promptSafety-BGV1wrE6.cjs.map} +1 -1
- package/dist/{server--34TYvGP.js → server-CM5XNicg.js} +4 -4
- package/dist/{server--34TYvGP.js.map → server-CM5XNicg.js.map} +1 -1
- package/dist/{server-DZdM2cLD.cjs → server-ObUrsDs2.cjs} +4 -4
- package/dist/{server-DZdM2cLD.cjs.map → server-ObUrsDs2.cjs.map} +1 -1
- package/package.json +1 -1
|
@@ -930,7 +930,7 @@ Notes:
|
|
|
930
930
|
|
|
931
931
|
### Custom views
|
|
932
932
|
|
|
933
|
-
When the built-in views (table / calendar / kanban
|
|
933
|
+
When the built-in views (table / calendar / kanban) don't fit what
|
|
934
934
|
the user wants to _see_ — a year/quarter overview, a Gantt bar, a printable
|
|
935
935
|
report — author a **custom view**: an HTML file the host renders in a sandboxed
|
|
936
936
|
iframe over the records. Register it in `views[]` (above); it becomes a button
|
|
@@ -187,6 +187,30 @@ invalid`), what to check depends on the sandbox:
|
|
|
187
187
|
`~/.claude`. Do not chase the environment variable here — the host login is the one
|
|
188
188
|
that counts.
|
|
189
189
|
|
|
190
|
+
On macOS with the sandbox on, MulmoClaude copies the login from the Keychain into
|
|
191
|
+
`~/.claude/.credentials.json` and, when the token has expired and a refresh token exists,
|
|
192
|
+
launches the `claude` CLI to renew it. Each launch is a real Claude session, so it waits a
|
|
193
|
+
few minutes after a failed renewal and stops after a few failures in a row.
|
|
194
|
+
Look for one of these server log lines:
|
|
195
|
+
|
|
196
|
+
- `Keychain credentials cannot be renewed (<reason>)` — the Keychain item has no
|
|
197
|
+
refresh token (for example an empty item), so no renewal is attempted.
|
|
198
|
+
- `Token renewal failed N times in a row; not trying again` — renewals kept failing, so
|
|
199
|
+
they stopped for this server process.
|
|
200
|
+
- `Access token expired; last renewal failed, next attempt in Ns` — waiting before the
|
|
201
|
+
next try.
|
|
202
|
+
|
|
203
|
+
The fix is the same `claude /login` on the host; the next turn picks the new login up
|
|
204
|
+
without a restart. If the server itself would not start (it exited asking for this, and
|
|
205
|
+
`yarn dev` did not restart it), start it again after `/login`. If `/login` succeeds and
|
|
206
|
+
the "cannot be renewed" line keeps coming back, the Keychain may hold a second, empty
|
|
207
|
+
`Claude Code-credentials` item. MulmoClaude reads both the item under the user's login
|
|
208
|
+
name and whatever a lookup by service name returns, and uses the better one, so a stray
|
|
209
|
+
item only matters when the real login is stored under another account name.
|
|
210
|
+
`security find-generic-password -s "Claude Code-credentials"` prints the account (`acct`)
|
|
211
|
+
of the item a service-only lookup returns; an account such as `unknown` is the stray item,
|
|
212
|
+
removed with `security delete-generic-password -s "Claude Code-credentials" -a <that acct>`.
|
|
213
|
+
|
|
190
214
|
You will usually be reading this AFTER the user re-logged in (a failing turn never
|
|
191
215
|
reaches you); answer "why did that happen" with the cause above rather than
|
|
192
216
|
investigating MulmoClaude's settings.
|
|
@@ -215,7 +239,7 @@ Tell the user to enable the two opt-in mounts on the next agent spawn
|
|
|
215
239
|
```bash
|
|
216
240
|
# Forward the host's SSH agent into the container.
|
|
217
241
|
# Private keys stay on the host; only the signing oracle is exposed.
|
|
218
|
-
|
|
242
|
+
SANDBOX_SSH_AGENT_FORWARD=1 \
|
|
219
243
|
# Mount allowlisted config files/dirs read-only — including ~/.config/gh.
|
|
220
244
|
SANDBOX_MOUNT_CONFIGS=gh \
|
|
221
245
|
yarn dev # or: npx mulmoclaude
|
|
@@ -162,7 +162,9 @@ To create an all-day event in a `datetime` column (a calendar that mixes timed
|
|
|
162
162
|
and all-day events), write a **bare date** on both ends instead:
|
|
163
163
|
`start: "2026-07-17"`, `end: "2026-07-18"`. A bare date is a valid `datetime`
|
|
164
164
|
value, it is pushed as Google's `start.date` / `end.date`, and the record form
|
|
165
|
-
edits it with a date picker.
|
|
165
|
+
edits it with a date picker. In the form, the **All day** checkbox beside a
|
|
166
|
+
`datetime` field switches between the two shapes (checking drops the clock,
|
|
167
|
+
unchecking starts the day at `00:00`), so the user can also do this by hand. After the next sync it reads back as `…T00:00`
|
|
166
168
|
and stays all-day.
|
|
167
169
|
|
|
168
170
|
For a calendar whose events are ALL all-day, give start/end a **`date`** column
|
|
@@ -179,8 +181,11 @@ by typing two dates is pushed as a real all-day event.
|
|
|
179
181
|
|
|
180
182
|
Google's all-day `end` is **exclusive** — it is the day AFTER the last day, so a
|
|
181
183
|
single day on the 17th is `on: 2026-07-17`, `until: 2026-07-18`. Records
|
|
182
|
-
mirrored from Google already carry it that way
|
|
183
|
-
|
|
184
|
+
mirrored from Google already carry it that way, and the calendar view reads the
|
|
185
|
+
field mapped to `end` the same way: an end that is a bare date or `00:00` stops
|
|
186
|
+
the span on the day before, so that event shows on the 17th only. The stored
|
|
187
|
+
value itself stays exclusive — say so when the user asks why the end date in
|
|
188
|
+
the table "looks a day late", and do not offset it, because the push sends the
|
|
184
189
|
stored value straight back.
|
|
185
190
|
|
|
186
191
|
An existing all-day event stays all-day when its dates are edited, whatever the
|
package/assets/helps/index.md
CHANGED
|
@@ -20,7 +20,7 @@ Under the hood it uses the Claude Code Agent SDK as its LLM core. Claude has ful
|
|
|
20
20
|
|
|
21
21
|
## Key Capabilities
|
|
22
22
|
|
|
23
|
-
- Build **collections** — schema-driven data apps (todo lists, trackers, ledgers, decks) with table / calendar / kanban
|
|
23
|
+
- Build **collections** — schema-driven data apps (todo lists, trackers, ledgers, decks) with table / calendar / kanban views, plus LLM-authored **custom views**; manage a calendar scheduler
|
|
24
24
|
- Present documents and spreadsheets with rich formatting
|
|
25
25
|
- Generate and edit images
|
|
26
26
|
- Create interactive mind maps
|
|
@@ -33,7 +33,7 @@ Under the hood it uses the Claude Code Agent SDK as its LLM core. Claude has ful
|
|
|
33
33
|
|
|
34
34
|
## Collections — Apps from Data
|
|
35
35
|
|
|
36
|
-
Collections are MulmoClaude's most distinctive capability: a **schema-driven data app declared in a single small JSON file**, with no database, ORM, or migration tool. You describe a data model, cross-record relations, computed fields, and per-record action buttons in a `schema.json`; the host reads that DSL and renders a full app — table, calendar
|
|
36
|
+
Collections are MulmoClaude's most distinctive capability: a **schema-driven data app declared in a single small JSON file**, with no database, ORM, or migration tool. You describe a data model, cross-record relations, computed fields, and per-record action buttons in a `schema.json`; the host reads that DSL and renders a full app — table, calendar and kanban board views — over a folder of plain `<id>.json` records. The same primitives power todo lists, recipe boxes, stock portfolios, invoice ledgers, vocabulary decks, and curricula, all without any app-specific host code. This is the core philosophy made concrete: a `schema.json` plus a folder of records **is** the app.
|
|
37
37
|
|
|
38
38
|
Because Claude authors and edits the schema for you in conversation, you build and reshape these apps just by talking — "add a priority field," "track this as a kanban," "make rent recur monthly" — and the collection updates live. We call this **vibe crafting**: the end-user counterpart of a developer's "vibe coding" — you describe the app you want and Claude builds it, with the schema validated and custom views sandboxed so you get the power without the pitfalls. Records stay validated, computed fields (totals, cross-collection lookups) recompute on every render, and completion bells / recurring obligations are declared in the same schema.
|
|
39
39
|
|
|
@@ -41,7 +41,7 @@ See [Collection skills](config/helps/collection-skills.md) for the full schema D
|
|
|
41
41
|
|
|
42
42
|
## Custom Views — Views the Built-ins Don't Cover
|
|
43
43
|
|
|
44
|
-
When the built-in table / calendar / kanban
|
|
44
|
+
When the built-in table / calendar / kanban views don't fit what you want to _see_ — a year-at-a-glance planner, a Gantt bar, a heat-map, a printable report — Claude authors a **custom view**: a single HTML file rendered in a sandboxed iframe over the collection's records. It reads (and optionally writes) records through a scoped token, stays live as the data changes, and can hand work back to a chat — all without any view-specific host code. The view is data, just like the rest of the collection, so you can ask for an entirely new way to look at your data in plain language and get it.
|
|
45
45
|
|
|
46
46
|
See [Custom views](config/helps/custom-view.md) for the authoring contract. A
|
|
47
47
|
view can also target the **mobile remote app** (`target: "mobile"`) — rendered
|
package/assets/helps/sandbox.md
CHANGED
|
@@ -90,7 +90,7 @@ On macOS, the Docker container uses a separate credential store from the host. B
|
|
|
90
90
|
yarn sandbox:login
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
This
|
|
93
|
+
This copies the Claude Code login from the macOS Keychain to `~/.claude/.credentials.json`, which the container reads. The server also does this before each turn while the sandbox is on, and at startup when the file is missing, so the command is only needed when that fails; run `claude /login` on the host first if the login itself has expired.
|
|
94
94
|
|
|
95
95
|
## Building the Image
|
|
96
96
|
|
|
@@ -75,11 +75,33 @@ export declare function buildMonthGrid(year: number, month: number, weekStartsOn
|
|
|
75
75
|
* 1. the clock on a `datetime` anchor/end value, else
|
|
76
76
|
* 2. `timeField` — a separate free-form time-string column (e.g. "14:00-17:00").
|
|
77
77
|
* A record with no resolvable clock has `startMin === endMin === null`. */
|
|
78
|
-
export declare function recordSpan<T extends Record<string, unknown>>(item: T, anchorField: string, endField?: string, timeField?: string): RecordSpan<T> | null;
|
|
78
|
+
export declare function recordSpan<T extends Record<string, unknown>>(item: T, anchorField: string, endField?: string, timeField?: string, options?: SpanOptions): RecordSpan<T> | null;
|
|
79
|
+
/** How a collection reads its end field. */
|
|
80
|
+
export interface SpanOptions {
|
|
81
|
+
/** The end names the first moment AFTER the record, as Google Calendar's
|
|
82
|
+
* `end` does: an all-day event on the 17th ends on the 18th. */
|
|
83
|
+
endExclusive?: boolean;
|
|
84
|
+
}
|
|
85
|
+
/** The span options a collection's calendar uses for `endField`. Only a
|
|
86
|
+
* Google Calendar mirror reads its end as exclusive — the field its sync maps
|
|
87
|
+
* to `end` — because a plain collection may mean its end date inclusively. */
|
|
88
|
+
export declare function spanOptionsFor(schema: {
|
|
89
|
+
googleCalendar?: {
|
|
90
|
+
map: Record<string, string>;
|
|
91
|
+
} | undefined;
|
|
92
|
+
}, endField: string | undefined): SpanOptions;
|
|
93
|
+
/** Whether an end value names the very start of its day: a bare date, or a
|
|
94
|
+
* datetime at exactly `00:00`. */
|
|
95
|
+
export declare function endsAtDayBoundary(endRaw: unknown): boolean;
|
|
96
|
+
/** An exclusive end that falls at a day boundary on a later day does not
|
|
97
|
+
* occupy that day, so the span stops on the day before. An end with any other
|
|
98
|
+
* clock does occupy its day and is left alone. `endRaw` is the end field's
|
|
99
|
+
* own value — the span may already carry a clock from elsewhere. */
|
|
100
|
+
export declare function withExclusiveEnd<T>(span: RecordSpan<T>, endRaw: unknown): RecordSpan<T>;
|
|
79
101
|
/** Split records into those that land on the calendar (with their spans)
|
|
80
102
|
* and those with no usable anchor date (the "no date" tray). Spans are
|
|
81
103
|
* sorted by start day so same-day stacking is stable across renders. */
|
|
82
|
-
export declare function bucketRecords<T extends Record<string, unknown>>(items: readonly T[], anchorField: string, endField?: string, timeField?: string): {
|
|
104
|
+
export declare function bucketRecords<T extends Record<string, unknown>>(items: readonly T[], anchorField: string, endField?: string, timeField?: string, options?: SpanOptions): {
|
|
83
105
|
spans: RecordSpan<T>[];
|
|
84
106
|
noDate: T[];
|
|
85
107
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_dist = require("../dist-Gj7ygaW2.cjs");
|
|
3
|
-
const require_itemId = require("../itemId-
|
|
4
|
-
const require_promptSafety = require("../promptSafety-
|
|
3
|
+
const require_itemId = require("../itemId-CVrNibwT.cjs");
|
|
4
|
+
const require_promptSafety = require("../promptSafety-BGV1wrE6.cjs");
|
|
5
5
|
const require_project = require("../project-C1ep9pvo.cjs");
|
|
6
6
|
const require_iconGlyph = require("../iconGlyph-fSBp6k4J.cjs");
|
|
7
7
|
require("../errorMessage-CT-va_Pv.cjs");
|
|
@@ -733,6 +733,7 @@ exports.embedTargetId = require_itemId.embedTargetId;
|
|
|
733
733
|
exports.emptyRow = emptyRow;
|
|
734
734
|
exports.encodeRecordTimes = require_itemId.encodeRecordTimes;
|
|
735
735
|
exports.encodeServerTime = require_itemId.encodeServerTime;
|
|
736
|
+
exports.endsAtDayBoundary = require_itemId.endsAtDayBoundary;
|
|
736
737
|
exports.enumColorClasses = enumColorClasses;
|
|
737
738
|
exports.enumSortValue = enumSortValue;
|
|
738
739
|
exports.enumValueIndex = enumValueIndex;
|
|
@@ -799,6 +800,7 @@ exports.snapshotEmptyEnums = snapshotEmptyEnums;
|
|
|
799
800
|
exports.sortItems = sortItems;
|
|
800
801
|
exports.sortValueOf = sortValueOf;
|
|
801
802
|
exports.spanCoversDay = require_itemId.spanCoversDay;
|
|
803
|
+
exports.spanOptionsFor = require_itemId.spanOptionsFor;
|
|
802
804
|
exports.storageKindFor = require_itemId.storageKindFor;
|
|
803
805
|
exports.stringSortValue = stringSortValue;
|
|
804
806
|
exports.toPresentCollectionData = toPresentCollectionData;
|
|
@@ -810,6 +812,7 @@ exports.uniqueRefTargets = require_promptSafety.uniqueRefTargets;
|
|
|
810
812
|
exports.viaMatches = require_promptSafety.viaMatches;
|
|
811
813
|
exports.whenMatches = require_promptSafety.whenMatches;
|
|
812
814
|
exports.withCardScope = withCardScope;
|
|
815
|
+
exports.withExclusiveEnd = require_itemId.withExclusiveEnd;
|
|
813
816
|
exports.ymdKey = require_itemId.ymdKey;
|
|
814
817
|
|
|
815
818
|
//# sourceMappingURL=index.cjs.map
|
package/dist/collection/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as errorMessage } from "../dist-BzoA9pDR.js";
|
|
2
|
-
import { A as
|
|
3
|
-
import { C as actionVisible, D as fieldDefaultValue, E as whenMatches, O as firstUnknownDefault, S as viaMatches, T as fieldVisible, _ as uniqueRefTargets, a as evaluateDerived, b as projectBacklinkRow, c as selectDynamicRecord, d as flagFieldValue, f as itemIsDone, g as uniqueEmbedTargets, h as uniqueBacklinkSources, k as schemaDefaults, l as chipMatches, m as matchesWhere, n as deriveAll, o as firstDateField, p as toggleChecked, r as resolveRowRefs, s as resolveIcon, t as defangForPrompt, u as completionCoveredByFieldChip, v as backlinkRows, w as agentActionRunKey, x as rollupValue, y as coerceNumeric } from "../promptSafety-
|
|
2
|
+
import { $ as fieldText, A as collectionKeyId, B as SAFE_SLUG_PATTERN, C as decodeRecordTimes, D as isCanonicalServerTime, E as encodeServerTime, F as localCollectionKeyOf, G as AGENT_INGEST_KIND, H as isSafeRecordId, I as parseCollectionKeyId, J as INGEST_KINDS, K as COMPUTED_TYPES, L as sameCollectionKey, M as isLocalCollectionKey, N as isSharedCollectionKey, O as serverTimeMillis, P as isValidCollectionName, Q as storageKindFor, R as sharedCollectionKey, S as isAccentColor, T as encodeRecordTimes, U as isSafeSlug, V as generateUniqueId, W as nextUniqueItemId, X as isFieldDrivenEvery, Y as embedTargetId, Z as isReadOnlySchema, _ as spanOptionsFor, a as bucketRecords, b as ACCENT_COLORS, c as dateOf, d as monthAnchorDate, et as fieldTextOrNull, f as parseIsoDate, g as spanCoversDay, h as recordSpan, i as assignLanes, j as collectionKeyName, k as serverTimeOf, l as daySlice, m as parseTimeRange, n as shortHexId, o as buildMonthGrid, p as parseIsoDateTime, q as FEED_SCHEDULES, r as MINUTES_PER_DAY, s as compareYmd, t as newItemId, u as endsAtDayBoundary, v as withExclusiveEnd, w as decodeServerTime, x as accentChipClasses, y as ymdKey, z as SAFE_RECORD_ID_PATTERN } from "../itemId-C9s-Jd5s.js";
|
|
3
|
+
import { C as actionVisible, D as fieldDefaultValue, E as whenMatches, O as firstUnknownDefault, S as viaMatches, T as fieldVisible, _ as uniqueRefTargets, a as evaluateDerived, b as projectBacklinkRow, c as selectDynamicRecord, d as flagFieldValue, f as itemIsDone, g as uniqueEmbedTargets, h as uniqueBacklinkSources, k as schemaDefaults, l as chipMatches, m as matchesWhere, n as deriveAll, o as firstDateField, p as toggleChecked, r as resolveRowRefs, s as resolveIcon, t as defangForPrompt, u as completionCoveredByFieldChip, v as backlinkRows, w as agentActionRunKey, x as rollupValue, y as coerceNumeric } from "../promptSafety-B5uGroik.js";
|
|
4
4
|
import { n as projectRecordFields, t as mergeIntoExisting } from "../project-B0j_Vf_Q.js";
|
|
5
5
|
import { n as resolveIconGlyph, t as DEFAULT_ICON } from "../iconGlyph-D8JeNg7R.js";
|
|
6
6
|
import "../errorMessage-BQNpSYdT.js";
|
|
@@ -684,6 +684,6 @@ var buildOntologyGraph = (entries) => {
|
|
|
684
684
|
};
|
|
685
685
|
};
|
|
686
686
|
//#endregion
|
|
687
|
-
export { ACCENT_COLORS, AGENT_INGEST_KIND, COMPUTED_TYPES, DEFAULT_ICON, ENUM_ALERT, ENUM_NEUTRAL, ENUM_NUDGE, FEED_SCHEDULES, INGEST_KINDS, MINUTES_PER_DAY, SAFE_RECORD_ID_PATTERN, SAFE_SLUG_PATTERN, TOOL_DEFINITION, TOOL_NAME, accentChipClasses, actionVisible, agentActionRunKey, assignLanes, backlinkRows, boolSortValue, bucketRecords, buildMonthGrid, buildOntologyGraph, buildUpdatedRecord, cellKey, chipMatches, coerceInlineValue, coerceNumeric, collectionCardKey, collectionKeyId, collectionKeyName, compareSortValues, compareYmd, completionCoveredByFieldChip, customViewSendsChat, dateOf, dateSortValue, daySlice, decodeRecordTimes, decodeServerTime, defangForPrompt, deriveAll, derivedSortValue, draftToRecord, embedTargetId, emptyRow, encodeRecordTimes, encodeServerTime, enumColorClasses, enumSortValue, enumValueIndex, errorMessage, evaluateDerived, executePresentCollection, fieldDefaultValue, fieldText, fieldTextOrNull, fieldVisible, firstDateField, firstMissingRequiredField, firstUnknownDefault, flagFieldValue, generateUniqueId, isAccentColor, isCanonicalServerTime, isFieldDrivenEvery, isLocalCollectionKey, isReadOnlySchema, isSafeRecordId, isSafeSlug, isSharedCollectionKey, isSortableField, isValidCollectionName, itemIdOf, itemIsDone, itemLabelOf, itemMatchesQuery, labelFieldFor, localCollectionKeyOf, matchesWhere, mergeIntoExisting, monthAnchorDate, newItemId, nextSortDirection, nextUniqueItemId, numericSortValue, parseCollectionKeyId, parseIsoDate, parseIsoDateTime, parseTimeRange, projectBacklinkRow, projectRecordFields, recordSpan, resolveEnumColor, resolveIcon, resolveIconGlyph, resolveRowRefs, rollupValue, rowFromItem, rowIdOf, sameCollectionCard, sameCollectionKey, scalarSortValue, schemaDefaults, selectDynamicRecord, serverTimeMillis, serverTimeOf, sharedCollectionKey, shortHexId, skillCommandSeed, snapshotEmptyEnums, sortItems, sortValueOf, spanCoversDay, storageKindFor, stringSortValue, toPresentCollectionData, toShortcutInfo, toggleChecked, uniqueBacklinkSources, uniqueEmbedTargets, uniqueRefTargets, viaMatches, whenMatches, withCardScope, ymdKey };
|
|
687
|
+
export { ACCENT_COLORS, AGENT_INGEST_KIND, COMPUTED_TYPES, DEFAULT_ICON, ENUM_ALERT, ENUM_NEUTRAL, ENUM_NUDGE, FEED_SCHEDULES, INGEST_KINDS, MINUTES_PER_DAY, SAFE_RECORD_ID_PATTERN, SAFE_SLUG_PATTERN, TOOL_DEFINITION, TOOL_NAME, accentChipClasses, actionVisible, agentActionRunKey, assignLanes, backlinkRows, boolSortValue, bucketRecords, buildMonthGrid, buildOntologyGraph, buildUpdatedRecord, cellKey, chipMatches, coerceInlineValue, coerceNumeric, collectionCardKey, collectionKeyId, collectionKeyName, compareSortValues, compareYmd, completionCoveredByFieldChip, customViewSendsChat, dateOf, dateSortValue, daySlice, decodeRecordTimes, decodeServerTime, defangForPrompt, deriveAll, derivedSortValue, draftToRecord, embedTargetId, emptyRow, encodeRecordTimes, encodeServerTime, endsAtDayBoundary, enumColorClasses, enumSortValue, enumValueIndex, errorMessage, evaluateDerived, executePresentCollection, fieldDefaultValue, fieldText, fieldTextOrNull, fieldVisible, firstDateField, firstMissingRequiredField, firstUnknownDefault, flagFieldValue, generateUniqueId, isAccentColor, isCanonicalServerTime, isFieldDrivenEvery, isLocalCollectionKey, isReadOnlySchema, isSafeRecordId, isSafeSlug, isSharedCollectionKey, isSortableField, isValidCollectionName, itemIdOf, itemIsDone, itemLabelOf, itemMatchesQuery, labelFieldFor, localCollectionKeyOf, matchesWhere, mergeIntoExisting, monthAnchorDate, newItemId, nextSortDirection, nextUniqueItemId, numericSortValue, parseCollectionKeyId, parseIsoDate, parseIsoDateTime, parseTimeRange, projectBacklinkRow, projectRecordFields, recordSpan, resolveEnumColor, resolveIcon, resolveIconGlyph, resolveRowRefs, rollupValue, rowFromItem, rowIdOf, sameCollectionCard, sameCollectionKey, scalarSortValue, schemaDefaults, selectDynamicRecord, serverTimeMillis, serverTimeOf, sharedCollectionKey, shortHexId, skillCommandSeed, snapshotEmptyEnums, sortItems, sortValueOf, spanCoversDay, spanOptionsFor, storageKindFor, stringSortValue, toPresentCollectionData, toShortcutInfo, toggleChecked, uniqueBacklinkSources, uniqueEmbedTargets, uniqueRefTargets, viaMatches, whenMatches, withCardScope, withExclusiveEnd, ymdKey };
|
|
688
688
|
|
|
689
689
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,9 +4,9 @@ const require_dist = require("../../../dist-Gj7ygaW2.cjs");
|
|
|
4
4
|
const require_root = require("../../../root-BvwBUcol.cjs");
|
|
5
5
|
const require_relPath = require("../../../relPath-CTAjGdCL.cjs");
|
|
6
6
|
const require_utils_fetch = require("../../../utils/fetch.cjs");
|
|
7
|
-
const require_discovery = require("../../../discovery-
|
|
7
|
+
const require_discovery = require("../../../discovery-CwBXvtyn.cjs");
|
|
8
8
|
const require_templatePath = require("../../../templatePath-27vUZowm.cjs");
|
|
9
|
-
const require_server = require("../../../server-
|
|
9
|
+
const require_server = require("../../../server-ObUrsDs2.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");
|
|
@@ -2,9 +2,9 @@ import { l as isUnknownArray, t as errorMessage } from "../../../dist-BzoA9pDR.j
|
|
|
2
2
|
import { n as writeFileAtomic } from "../../../root-BcS4-Kge.js";
|
|
3
3
|
import { n as toPosixRelPath } from "../../../relPath-DW8MC8VO.js";
|
|
4
4
|
import { fetchWithTimeout } from "../../../utils/fetch.js";
|
|
5
|
-
import { K as safeRecordId, et as collectionsRegistriesConfigPath, ht as skillsStagingDir, lt as projectSkillsDir, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema } from "../../../discovery-
|
|
5
|
+
import { K as safeRecordId, et as collectionsRegistriesConfigPath, ht as skillsStagingDir, lt as projectSkillsDir, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema } from "../../../discovery-XoYJI2Ot.js";
|
|
6
6
|
import { t as isSafeActionTemplatePath } from "../../../templatePath-k_WNbL_Q.js";
|
|
7
|
-
import { y as ONE_SECOND_MS } from "../../../server
|
|
7
|
+
import { y as ONE_SECOND_MS } from "../../../server-CM5XNicg.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";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_root = require("../../root-BvwBUcol.cjs");
|
|
3
|
-
const require_itemId = require("../../itemId-
|
|
4
|
-
const require_discovery = require("../../discovery-
|
|
3
|
+
const require_itemId = require("../../itemId-CVrNibwT.cjs");
|
|
4
|
+
const require_discovery = require("../../discovery-CwBXvtyn.cjs");
|
|
5
5
|
const require_templatePath = require("../../templatePath-27vUZowm.cjs");
|
|
6
|
-
const require_server = require("../../server-
|
|
6
|
+
const require_server = require("../../server-ObUrsDs2.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;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as canonicalRoot } from "../../root-BcS4-Kge.js";
|
|
2
|
-
import {
|
|
3
|
-
import { $ as collectionChangePayload, A as readItem, B as SCHEMA_FILE, C as CollectionQueryZ, D as generateItemId, E as deleteItem, F as loadAppManifest, G as resolveTemplatePath, H as isUnderRealRoot, I as parseAppManifest, J as BackendUnavailableError, K as safeRecordId, L as sharedItemsPath, M as writeItem, N as APP_MANIFEST_FILE, O as isRegularFile, P as appManifestReason, Q as collectionChangeKey, R as pageFromFullRead, S as compileJsonlQuery, T as MAX_QUERY_ROWS, U as itemFilePath, V as isContainedInRoot, W as resolveDataDir, X as COLLECTION_ROOT_REQUIRED, Y as isBackendUnavailable, _ as dedupeByRecordId, a as toDetail, ct as peekWorkspaceRoot, d as storeFor, dt as setCollectionChangePublisher, ft as setFirestoreAccessor, g as decodeCsvRecordId, h as csvRowToItem, i as resolvePrimaryField, it as hostSupportsSharedCollections, j as resolveCreateItemId, k as listItems, l as collectionWritable, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, o as toSummary, ot as localCollectionKey, p as MAX_CSV_ROWS, pt as setSharedCollectionsSupport, q as safeSlugName, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema, tt as configureCollectionHost, u as readOnlyRefusal, ut as publishCollectionChange, v as encodeCsvRecordId, w as DEFAULT_QUERY_ROWS, x as compileCsvQuery, y as normalizeCsvValue, z as projectItemFields } from "../../discovery-
|
|
2
|
+
import { K as COMPUTED_TYPES } from "../../itemId-C9s-Jd5s.js";
|
|
3
|
+
import { $ as collectionChangePayload, A as readItem, B as SCHEMA_FILE, C as CollectionQueryZ, D as generateItemId, E as deleteItem, F as loadAppManifest, G as resolveTemplatePath, H as isUnderRealRoot, I as parseAppManifest, J as BackendUnavailableError, K as safeRecordId, L as sharedItemsPath, M as writeItem, N as APP_MANIFEST_FILE, O as isRegularFile, P as appManifestReason, Q as collectionChangeKey, R as pageFromFullRead, S as compileJsonlQuery, T as MAX_QUERY_ROWS, U as itemFilePath, V as isContainedInRoot, W as resolveDataDir, X as COLLECTION_ROOT_REQUIRED, Y as isBackendUnavailable, _ as dedupeByRecordId, a as toDetail, ct as peekWorkspaceRoot, d as storeFor, dt as setCollectionChangePublisher, ft as setFirestoreAccessor, g as decodeCsvRecordId, h as csvRowToItem, i as resolvePrimaryField, it as hostSupportsSharedCollections, j as resolveCreateItemId, k as listItems, l as collectionWritable, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, o as toSummary, ot as localCollectionKey, p as MAX_CSV_ROWS, pt as setSharedCollectionsSupport, q as safeSlugName, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema, tt as configureCollectionHost, u as readOnlyRefusal, ut as publishCollectionChange, v as encodeCsvRecordId, w as DEFAULT_QUERY_ROWS, x as compileCsvQuery, y as normalizeCsvValue, z as projectItemFields } from "../../discovery-XoYJI2Ot.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 recordFieldProblem, B as stagedSkillDir, C as applyMutateAction, D as validateCollectionRecords, E as STORE_UNREADABLE, F as buildCollectionActionSeedPrompt, I as promptPathsFor, L as readCustomViewHtml, M as enrichItems, N as runQueryOverRows, O as validateRecordObject, P as buildActionSeedPrompt, R as readCustomViewI18n, S as schemaRelations, T as MAX_RECORD_ISSUES, _ as resolveEvery, a as MAX_UNSELECTIVE_ITEMS, b as computeCollectionIcon, c as deleteCollection, d as computeSuccessor, f as daysInMonth, g as parseCivil, h as maybeSpawnSuccessor, i as MAX_SCHEMA_ISSUES, j as runCollectionQuery, k as compileRecordZ, l as deleteCollectionRefusalMessage, m as isTriggerDue, n as MAX_PUT_ITEMS, o as makeManageCollectionTool, p as formatCivil, r as MAX_PUT_LINT, s as deleteCustomView, t as MAX_ITEMS_FILE_BYTES, u as advanceTriggerDate, v as successorId, w as firstMutateParamProblem, x as buildWorkspaceOntology, z as readSkillTemplate } from "../../server
|
|
5
|
+
import { A as recordFieldProblem, B as stagedSkillDir, C as applyMutateAction, D as validateCollectionRecords, E as STORE_UNREADABLE, F as buildCollectionActionSeedPrompt, I as promptPathsFor, L as readCustomViewHtml, M as enrichItems, N as runQueryOverRows, O as validateRecordObject, P as buildActionSeedPrompt, R as readCustomViewI18n, S as schemaRelations, T as MAX_RECORD_ISSUES, _ as resolveEvery, a as MAX_UNSELECTIVE_ITEMS, b as computeCollectionIcon, c as deleteCollection, d as computeSuccessor, f as daysInMonth, g as parseCivil, h as maybeSpawnSuccessor, i as MAX_SCHEMA_ISSUES, j as runCollectionQuery, k as compileRecordZ, l as deleteCollectionRefusalMessage, m as isTriggerDue, n as MAX_PUT_ITEMS, o as makeManageCollectionTool, p as formatCivil, r as MAX_PUT_LINT, s as deleteCustomView, t as MAX_ITEMS_FILE_BYTES, u as advanceTriggerDate, v as successorId, w as firstMutateParamProblem, x as buildWorkspaceOntology, z as readSkillTemplate } from "../../server-CM5XNicg.js";
|
|
6
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_PUT_LINT, 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, isUnderRealRoot, 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, stagedSkillDir, storeFor, successorId, toDetail, toSummary, validateCollectionRecords, validateRecordObject, writeItem };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_root = require("../root-BvwBUcol.cjs");
|
|
3
|
-
const require_itemId = require("../itemId-
|
|
4
|
-
const require_promptSafety = require("../promptSafety-
|
|
3
|
+
const require_itemId = require("../itemId-CVrNibwT.cjs");
|
|
4
|
+
const require_promptSafety = require("../promptSafety-BGV1wrE6.cjs");
|
|
5
5
|
require("../collection/index.cjs");
|
|
6
|
-
const require_discovery = require("../discovery-
|
|
7
|
-
const require_server = require("../server-
|
|
6
|
+
const require_discovery = require("../discovery-CwBXvtyn.cjs");
|
|
7
|
+
const require_server = require("../server-ObUrsDs2.cjs");
|
|
8
8
|
const require_notifier = require("../notifier-B65Mvngb.cjs");
|
|
9
9
|
let node_fs_promises = require("node:fs/promises");
|
|
10
10
|
//#region src/collection-watchers/config.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as canonicalRoot } from "../root-BcS4-Kge.js";
|
|
2
|
-
import {
|
|
3
|
-
import { E as whenMatches, f as itemIsDone } from "../promptSafety-
|
|
2
|
+
import { $ as fieldText, P as isValidCollectionName } from "../itemId-C9s-Jd5s.js";
|
|
3
|
+
import { E as whenMatches, f as itemIsDone } from "../promptSafety-B5uGroik.js";
|
|
4
4
|
import "../collection/index.js";
|
|
5
|
-
import { $ as collectionChangePayload, U as itemFilePath, ct as peekWorkspaceRoot, d as storeFor, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, r as loadCollection, ut as publishCollectionChange } from "../discovery-
|
|
6
|
-
import { h as maybeSpawnSuccessor, m as isTriggerDue } from "../server
|
|
5
|
+
import { $ as collectionChangePayload, U as itemFilePath, ct as peekWorkspaceRoot, d as storeFor, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, r as loadCollection, ut as publishCollectionChange } from "../discovery-XoYJI2Ot.js";
|
|
6
|
+
import { h as maybeSpawnSuccessor, m as isTriggerDue } from "../server-CM5XNicg.js";
|
|
7
7
|
import { d as publish, m as updateForPlugin, n as clear, s as listAll } from "../notifier-vAp5t6wL.js";
|
|
8
8
|
import { access } from "node:fs/promises";
|
|
9
9
|
//#region src/collection-watchers/config.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-VH7oDXx4.cjs");
|
|
2
2
|
const require_dist = require("./dist-Gj7ygaW2.cjs");
|
|
3
3
|
const require_root = require("./root-BvwBUcol.cjs");
|
|
4
|
-
const require_itemId = require("./itemId-
|
|
4
|
+
const require_itemId = require("./itemId-CVrNibwT.cjs");
|
|
5
5
|
const require_project = require("./project-C1ep9pvo.cjs");
|
|
6
6
|
const require_listen = require("./listen-BXthb-9C.cjs");
|
|
7
7
|
const require_templatePath = require("./templatePath-27vUZowm.cjs");
|
|
@@ -3798,4 +3798,4 @@ Object.defineProperty(exports, "writeItem", {
|
|
|
3798
3798
|
}
|
|
3799
3799
|
});
|
|
3800
3800
|
|
|
3801
|
-
//# sourceMappingURL=discovery-
|
|
3801
|
+
//# sourceMappingURL=discovery-CwBXvtyn.cjs.map
|