@murphai/contracts 0.1.14 → 0.1.17
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/LICENSE +201 -674
- package/dist/automation.d.ts +185 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +110 -0
- package/dist/automation.js.map +1 -0
- package/dist/bank-entities.d.ts +6 -1
- package/dist/bank-entities.d.ts.map +1 -1
- package/dist/bank-entities.js +87 -10
- package/dist/bank-entities.js.map +1 -1
- package/dist/constants.d.ts +8 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -1
- package/dist/current-profile.d.ts +16 -0
- package/dist/current-profile.d.ts.map +1 -0
- package/dist/current-profile.js +163 -0
- package/dist/current-profile.js.map +1 -0
- package/dist/event-lifecycle.d.ts +28 -0
- package/dist/event-lifecycle.d.ts.map +1 -0
- package/dist/event-lifecycle.js +84 -0
- package/dist/event-lifecycle.js.map +1 -0
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +50 -96
- package/dist/examples.js.map +1 -1
- package/dist/health-entities.d.ts +44 -1
- package/dist/health-entities.d.ts.map +1 -1
- package/dist/health-entities.js +181 -11
- package/dist/health-entities.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +123 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +295 -0
- package/dist/memory.js.map +1 -0
- package/dist/registry-helpers.d.ts.map +1 -1
- package/dist/registry-helpers.js +46 -5
- package/dist/registry-helpers.js.map +1 -1
- package/dist/relation-links.d.ts +67 -0
- package/dist/relation-links.d.ts.map +1 -0
- package/dist/relation-links.js +149 -0
- package/dist/relation-links.js.map +1 -0
- package/dist/scripts/verify.js +2 -0
- package/dist/scripts/verify.js.map +1 -1
- package/dist/shares.d.ts +222 -85
- package/dist/shares.d.ts.map +1 -1
- package/dist/shares.js +17 -5
- package/dist/shares.js.map +1 -1
- package/dist/vault.d.ts +32 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +88 -0
- package/dist/vault.js.map +1 -0
- package/dist/zod.d.ts +468 -99
- package/dist/zod.d.ts.map +1 -1
- package/dist/zod.js +37 -74
- package/dist/zod.js.map +1 -1
- package/generated/assessment-response.schema.json +1 -1
- package/generated/audit-record.schema.json +2 -1
- package/generated/event-record.schema.json +4246 -500
- package/generated/frontmatter-allergy.schema.json +22 -0
- package/generated/frontmatter-condition.schema.json +44 -0
- package/generated/frontmatter-family-member.schema.json +22 -0
- package/generated/frontmatter-food.schema.json +22 -0
- package/generated/frontmatter-genetic-variant.schema.json +22 -0
- package/generated/frontmatter-goal.schema.json +62 -0
- package/generated/frontmatter-protocol.schema.json +70 -0
- package/generated/frontmatter-recipe.schema.json +44 -0
- package/generated/frontmatter-workout-format.schema.json +22 -102
- package/generated/inbox-capture-record.schema.json +0 -1
- package/generated/vault-metadata.schema.json +5 -291
- package/package.json +5 -11
- package/dist/tsconfig.build.tsbuildinfo +0 -1
package/dist/constants.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const CONTRACT_SCHEMA_VERSION = Object.freeze({
|
|
2
2
|
assessmentResponse: "murph.assessment-response.v1",
|
|
3
3
|
audit: "murph.audit.v1",
|
|
4
|
+
automationFrontmatter: "murph.frontmatter.automation.v1",
|
|
4
5
|
event: "murph.event.v1",
|
|
5
6
|
inboxCapture: "murph.inbox-capture.v1",
|
|
6
7
|
allergyFrontmatter: "murph.frontmatter.allergy.v1",
|
|
@@ -11,6 +12,7 @@ export const CONTRACT_SCHEMA_VERSION = Object.freeze({
|
|
|
11
12
|
geneticVariantFrontmatter: "murph.frontmatter.genetic-variant.v1",
|
|
12
13
|
goalFrontmatter: "murph.frontmatter.goal.v1",
|
|
13
14
|
journalDayFrontmatter: "murph.frontmatter.journal-day.v1",
|
|
15
|
+
memoryFrontmatter: "murph.frontmatter.memory.v1",
|
|
14
16
|
coreFrontmatter: "murph.frontmatter.core.v1",
|
|
15
17
|
profileCurrentFrontmatter: "murph.frontmatter.profile-current.v1",
|
|
16
18
|
profileSnapshot: "murph.profile-snapshot.v1",
|
|
@@ -23,11 +25,13 @@ export const CONTRACT_SCHEMA_VERSION = Object.freeze({
|
|
|
23
25
|
sharePack: "murph.share-pack.v1",
|
|
24
26
|
vault: "murph.vault.v1",
|
|
25
27
|
});
|
|
28
|
+
export const CURRENT_VAULT_FORMAT_VERSION = 1;
|
|
26
29
|
export const CONTRACT_ID_FORMAT = "prefix_ulid";
|
|
27
30
|
export const ID_PREFIXES = Object.freeze({
|
|
28
31
|
allergy: "alg",
|
|
29
32
|
assessment: "asmt",
|
|
30
33
|
audit: "aud",
|
|
34
|
+
automation: "automation",
|
|
31
35
|
condition: "cond",
|
|
32
36
|
document: "doc",
|
|
33
37
|
event: "evt",
|
|
@@ -36,6 +40,7 @@ export const ID_PREFIXES = Object.freeze({
|
|
|
36
40
|
food: "food",
|
|
37
41
|
goal: "goal",
|
|
38
42
|
meal: "meal",
|
|
43
|
+
memory: "mem",
|
|
39
44
|
pack: "pack",
|
|
40
45
|
profileSnapshot: "psnap",
|
|
41
46
|
provider: "prov",
|
|
@@ -128,6 +133,7 @@ export const AUDIT_ACTIONS = Object.freeze([
|
|
|
128
133
|
"intake_import",
|
|
129
134
|
"intake_project",
|
|
130
135
|
"vault_init",
|
|
136
|
+
"vault_upgrade",
|
|
131
137
|
"vault_repair",
|
|
132
138
|
"document_import",
|
|
133
139
|
"device_import",
|
|
@@ -154,6 +160,7 @@ export const AUDIT_STATUSES = Object.freeze(["success", "failure"]);
|
|
|
154
160
|
export const FILE_CHANGE_OPERATIONS = Object.freeze(["create", "append", "update", "copy"]);
|
|
155
161
|
export const FRONTMATTER_DOC_TYPES = Object.freeze({
|
|
156
162
|
allergy: "allergy",
|
|
163
|
+
automation: "automation",
|
|
157
164
|
core: "core",
|
|
158
165
|
condition: "condition",
|
|
159
166
|
experiment: "experiment",
|
|
@@ -162,6 +169,7 @@ export const FRONTMATTER_DOC_TYPES = Object.freeze({
|
|
|
162
169
|
geneticVariant: "genetic_variant",
|
|
163
170
|
goal: "goal",
|
|
164
171
|
journalDay: "journal_day",
|
|
172
|
+
memory: "memory",
|
|
165
173
|
profileCurrent: "profile_current",
|
|
166
174
|
provider: "provider",
|
|
167
175
|
recipe: "recipe",
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ProfileCurrentFrontmatter } from "./zod.ts";
|
|
2
|
+
export interface CurrentProfileDocumentInput {
|
|
3
|
+
snapshotId: string;
|
|
4
|
+
updatedAt: string;
|
|
5
|
+
source: unknown;
|
|
6
|
+
sourceAssessmentIds?: readonly string[] | null;
|
|
7
|
+
sourceEventIds?: readonly string[] | null;
|
|
8
|
+
profile: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface CurrentProfileDocument {
|
|
11
|
+
attributes: ProfileCurrentFrontmatter;
|
|
12
|
+
body: string;
|
|
13
|
+
markdown: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function buildCurrentProfileDocument(input: CurrentProfileDocumentInput): CurrentProfileDocument;
|
|
16
|
+
//# sourceMappingURL=current-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current-profile.d.ts","sourceRoot":"","sources":["../src/current-profile.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,yBAAyB,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiKD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CA2DxB"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { CONTRACT_SCHEMA_VERSION, FRONTMATTER_DOC_TYPES, } from "./constants.js";
|
|
2
|
+
import { profileCurrentFrontmatterSchema, } from "./zod.js";
|
|
3
|
+
import { safeParseContract } from "./validate.js";
|
|
4
|
+
function isPlainObject(value) {
|
|
5
|
+
return Object.prototype.toString.call(value) === "[object Object]";
|
|
6
|
+
}
|
|
7
|
+
function firstObject(value, key) {
|
|
8
|
+
const candidate = value[key];
|
|
9
|
+
return isPlainObject(candidate) ? candidate : null;
|
|
10
|
+
}
|
|
11
|
+
function firstStringArray(value, key) {
|
|
12
|
+
const candidate = value[key];
|
|
13
|
+
if (!Array.isArray(candidate)) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return candidate.filter((entry) => typeof entry === "string");
|
|
17
|
+
}
|
|
18
|
+
function stringifyScalar(value) {
|
|
19
|
+
if (value === null) {
|
|
20
|
+
return "null";
|
|
21
|
+
}
|
|
22
|
+
if (typeof value === "boolean") {
|
|
23
|
+
return value ? "true" : "false";
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
26
|
+
return String(value);
|
|
27
|
+
}
|
|
28
|
+
if (typeof value === "string") {
|
|
29
|
+
if (!value) {
|
|
30
|
+
return "\"\"";
|
|
31
|
+
}
|
|
32
|
+
if (/^[A-Za-z0-9_./:-]+$/u.test(value)) {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
return JSON.stringify(value);
|
|
36
|
+
}
|
|
37
|
+
throw new Error("Frontmatter supports only scalars, arrays, and plain objects.");
|
|
38
|
+
}
|
|
39
|
+
function serializeFrontmatterNode(value, indent = 0) {
|
|
40
|
+
const padding = " ".repeat(indent);
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
if (value.length === 0) {
|
|
43
|
+
return `${padding}[]`;
|
|
44
|
+
}
|
|
45
|
+
return value
|
|
46
|
+
.map((item) => {
|
|
47
|
+
if (Array.isArray(item) || isPlainObject(item)) {
|
|
48
|
+
const nested = serializeFrontmatterNode(item, indent + 2);
|
|
49
|
+
return `${padding}-\n${nested}`;
|
|
50
|
+
}
|
|
51
|
+
return `${padding}- ${stringifyScalar(item)}`;
|
|
52
|
+
})
|
|
53
|
+
.join("\n");
|
|
54
|
+
}
|
|
55
|
+
if (isPlainObject(value)) {
|
|
56
|
+
const entries = Object.entries(value);
|
|
57
|
+
if (entries.length === 0) {
|
|
58
|
+
return `${padding}{}`;
|
|
59
|
+
}
|
|
60
|
+
return entries
|
|
61
|
+
.map(([key, entryValue]) => {
|
|
62
|
+
if (!/^[A-Za-z0-9_-]+$/u.test(key)) {
|
|
63
|
+
throw new Error(`Invalid frontmatter key "${key}".`);
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(entryValue) || isPlainObject(entryValue)) {
|
|
66
|
+
const nested = serializeFrontmatterNode(entryValue, indent + 2);
|
|
67
|
+
if (nested.trim() === "[]") {
|
|
68
|
+
return `${padding}${key}: []`;
|
|
69
|
+
}
|
|
70
|
+
if (nested.trim() === "{}") {
|
|
71
|
+
return `${padding}${key}: {}`;
|
|
72
|
+
}
|
|
73
|
+
return `${padding}${key}:\n${nested}`;
|
|
74
|
+
}
|
|
75
|
+
return `${padding}${key}: ${stringifyScalar(entryValue)}`;
|
|
76
|
+
})
|
|
77
|
+
.join("\n");
|
|
78
|
+
}
|
|
79
|
+
return `${padding}${stringifyScalar(value)}`;
|
|
80
|
+
}
|
|
81
|
+
function stringifyFrontmatterDocument(input) {
|
|
82
|
+
const header = Object.keys(input.attributes).length === 0
|
|
83
|
+
? ""
|
|
84
|
+
: serializeFrontmatterNode(input.attributes);
|
|
85
|
+
return header
|
|
86
|
+
? `---\n${header}\n---\n${input.body}`
|
|
87
|
+
: `---\n---\n${input.body}`;
|
|
88
|
+
}
|
|
89
|
+
function renderProfileValue(value, depth = 0) {
|
|
90
|
+
const indent = " ".repeat(depth);
|
|
91
|
+
if (Array.isArray(value)) {
|
|
92
|
+
if (value.length === 0) {
|
|
93
|
+
return [`${indent}[]`];
|
|
94
|
+
}
|
|
95
|
+
return value.flatMap((entry) => {
|
|
96
|
+
if (isPlainObject(entry) || Array.isArray(entry)) {
|
|
97
|
+
return [`${indent}-`, ...renderProfileValue(entry, depth + 1)];
|
|
98
|
+
}
|
|
99
|
+
return [`${indent}- ${String(entry)}`];
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
if (isPlainObject(value)) {
|
|
103
|
+
const entries = Object.entries(value).sort(([left], [right]) => left.localeCompare(right));
|
|
104
|
+
if (entries.length === 0) {
|
|
105
|
+
return [`${indent}{}`];
|
|
106
|
+
}
|
|
107
|
+
return entries.flatMap(([key, entry]) => {
|
|
108
|
+
if (isPlainObject(entry) || Array.isArray(entry)) {
|
|
109
|
+
return [`${indent}- ${key}:`, ...renderProfileValue(entry, depth + 1)];
|
|
110
|
+
}
|
|
111
|
+
return [`${indent}- ${key}: ${String(entry)}`];
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return [`${indent}${String(value)}`];
|
|
115
|
+
}
|
|
116
|
+
export function buildCurrentProfileDocument(input) {
|
|
117
|
+
const topGoalIds = firstStringArray(firstObject(input.profile, "goals") ?? {}, "topGoalIds");
|
|
118
|
+
const unitPreferences = firstObject(input.profile, "unitPreferences") ?? undefined;
|
|
119
|
+
const rawAttributes = Object.fromEntries(Object.entries({
|
|
120
|
+
schemaVersion: CONTRACT_SCHEMA_VERSION.profileCurrentFrontmatter,
|
|
121
|
+
docType: FRONTMATTER_DOC_TYPES.profileCurrent,
|
|
122
|
+
snapshotId: input.snapshotId,
|
|
123
|
+
updatedAt: input.updatedAt,
|
|
124
|
+
sourceAssessmentIds: input.sourceAssessmentIds?.length
|
|
125
|
+
? [...input.sourceAssessmentIds]
|
|
126
|
+
: undefined,
|
|
127
|
+
sourceEventIds: input.sourceEventIds?.length ? [...input.sourceEventIds] : undefined,
|
|
128
|
+
topGoalIds: topGoalIds.length > 0 ? topGoalIds : undefined,
|
|
129
|
+
unitPreferences,
|
|
130
|
+
}).filter(([, value]) => value !== undefined));
|
|
131
|
+
const attributesResult = safeParseContract(profileCurrentFrontmatterSchema, rawAttributes);
|
|
132
|
+
if (!attributesResult.success) {
|
|
133
|
+
throw new Error(attributesResult.errors.join("; "));
|
|
134
|
+
}
|
|
135
|
+
const attributes = Object.fromEntries(Object.entries(attributesResult.data).filter(([, value]) => value !== undefined));
|
|
136
|
+
const body = [
|
|
137
|
+
"# Current Profile",
|
|
138
|
+
"",
|
|
139
|
+
`Snapshot ID: \`${input.snapshotId}\``,
|
|
140
|
+
`Recorded At: ${input.updatedAt}`,
|
|
141
|
+
`Source: ${String(input.source)}`,
|
|
142
|
+
"",
|
|
143
|
+
"## Structured Profile",
|
|
144
|
+
"",
|
|
145
|
+
...renderProfileValue(input.profile),
|
|
146
|
+
"",
|
|
147
|
+
"## JSON",
|
|
148
|
+
"",
|
|
149
|
+
"```json",
|
|
150
|
+
JSON.stringify(input.profile, null, 2),
|
|
151
|
+
"```",
|
|
152
|
+
"",
|
|
153
|
+
].join("\n");
|
|
154
|
+
return {
|
|
155
|
+
attributes,
|
|
156
|
+
body,
|
|
157
|
+
markdown: stringifyFrontmatterDocument({
|
|
158
|
+
attributes: attributes,
|
|
159
|
+
body,
|
|
160
|
+
}),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=current-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"current-profile.js","sourceRoot":"","sources":["../src/current-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface EventLifecycle {
|
|
2
|
+
revision: number;
|
|
3
|
+
state?: "deleted";
|
|
4
|
+
}
|
|
5
|
+
export type EventLifecycleParseResult = {
|
|
6
|
+
state: "missing";
|
|
7
|
+
} | {
|
|
8
|
+
state: "invalid";
|
|
9
|
+
} | {
|
|
10
|
+
state: "valid";
|
|
11
|
+
lifecycle: EventLifecycle;
|
|
12
|
+
};
|
|
13
|
+
export interface EventRevisionPriorityFields {
|
|
14
|
+
lifecycle?: unknown;
|
|
15
|
+
occurredAt?: string | null;
|
|
16
|
+
recordedAt?: string | null;
|
|
17
|
+
relativePath?: string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface EventRevisionCollapseFields extends EventRevisionPriorityFields {
|
|
20
|
+
eventId: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function parseEventLifecycle(value: unknown): EventLifecycleParseResult;
|
|
23
|
+
export declare function eventRevisionFromLifecycle(value: unknown): number;
|
|
24
|
+
export declare function isDeletedEventLifecycle(value: unknown): boolean;
|
|
25
|
+
export declare function hasInvalidEventLifecycle(value: unknown): boolean;
|
|
26
|
+
export declare function compareEventRevisionPriority(left: EventRevisionPriorityFields, right: EventRevisionPriorityFields): number;
|
|
27
|
+
export declare function collapseEventRevisions<T>(values: readonly T[], selectFields: (value: T) => EventRevisionCollapseFields): T[];
|
|
28
|
+
//# sourceMappingURL=event-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-lifecycle.d.ts","sourceRoot":"","sources":["../src/event-lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,MAAM,yBAAyB,GACjC;IACE,KAAK,EAAE,SAAS,CAAC;CAClB,GACD;IACE,KAAK,EAAE,SAAS,CAAC;CAClB,GACD;IACE,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEN,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,yBAAyB,CA8B3B;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,MAAM,CAGR;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,OAAO,CAGT;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,GACb,OAAO,CAET;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,2BAA2B,EACjC,KAAK,EAAE,2BAA2B,GACjC,MAAM,CAuBR;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,2BAA2B,GACtD,CAAC,EAAE,CAyBL"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export function parseEventLifecycle(value) {
|
|
2
|
+
if (value === undefined) {
|
|
3
|
+
return { state: "missing" };
|
|
4
|
+
}
|
|
5
|
+
if (!isPlainRecord(value)) {
|
|
6
|
+
return { state: "invalid" };
|
|
7
|
+
}
|
|
8
|
+
const revision = value.revision;
|
|
9
|
+
if (typeof revision !== "number" ||
|
|
10
|
+
!Number.isInteger(revision) ||
|
|
11
|
+
revision < 1) {
|
|
12
|
+
return { state: "invalid" };
|
|
13
|
+
}
|
|
14
|
+
const state = normalizeOptionalString(value.state);
|
|
15
|
+
if (state && state !== "deleted") {
|
|
16
|
+
return { state: "invalid" };
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
state: "valid",
|
|
20
|
+
lifecycle: {
|
|
21
|
+
revision,
|
|
22
|
+
state: state,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function eventRevisionFromLifecycle(value) {
|
|
27
|
+
const parsed = parseEventLifecycle(value);
|
|
28
|
+
return parsed.state === "valid" ? parsed.lifecycle.revision : 1;
|
|
29
|
+
}
|
|
30
|
+
export function isDeletedEventLifecycle(value) {
|
|
31
|
+
const parsed = parseEventLifecycle(value);
|
|
32
|
+
return parsed.state === "valid" && parsed.lifecycle.state === "deleted";
|
|
33
|
+
}
|
|
34
|
+
export function hasInvalidEventLifecycle(value) {
|
|
35
|
+
return parseEventLifecycle(value).state === "invalid";
|
|
36
|
+
}
|
|
37
|
+
export function compareEventRevisionPriority(left, right) {
|
|
38
|
+
const revisionComparison = eventRevisionFromLifecycle(left.lifecycle)
|
|
39
|
+
- eventRevisionFromLifecycle(right.lifecycle);
|
|
40
|
+
if (revisionComparison !== 0) {
|
|
41
|
+
return revisionComparison;
|
|
42
|
+
}
|
|
43
|
+
const leftRecordedAt = left.recordedAt ?? "";
|
|
44
|
+
const rightRecordedAt = right.recordedAt ?? "";
|
|
45
|
+
const recordedAtComparison = leftRecordedAt.localeCompare(rightRecordedAt);
|
|
46
|
+
if (recordedAtComparison !== 0) {
|
|
47
|
+
return recordedAtComparison;
|
|
48
|
+
}
|
|
49
|
+
const leftOccurredAt = left.occurredAt ?? "";
|
|
50
|
+
const rightOccurredAt = right.occurredAt ?? "";
|
|
51
|
+
const occurredAtComparison = leftOccurredAt.localeCompare(rightOccurredAt);
|
|
52
|
+
if (occurredAtComparison !== 0) {
|
|
53
|
+
return occurredAtComparison;
|
|
54
|
+
}
|
|
55
|
+
return (left.relativePath ?? "").localeCompare(right.relativePath ?? "");
|
|
56
|
+
}
|
|
57
|
+
export function collapseEventRevisions(values, selectFields) {
|
|
58
|
+
const latestByEventId = new Map();
|
|
59
|
+
for (const value of values) {
|
|
60
|
+
const fields = selectFields(value);
|
|
61
|
+
const eventId = normalizeOptionalString(fields.eventId);
|
|
62
|
+
if (!eventId || hasInvalidEventLifecycle(fields.lifecycle)) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const current = latestByEventId.get(eventId);
|
|
66
|
+
if (!current || compareEventRevisionPriority(current.fields, fields) < 0) {
|
|
67
|
+
latestByEventId.set(eventId, { value, fields });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return [...latestByEventId.values()]
|
|
71
|
+
.filter(({ fields }) => !isDeletedEventLifecycle(fields.lifecycle))
|
|
72
|
+
.map(({ value }) => value);
|
|
73
|
+
}
|
|
74
|
+
function isPlainRecord(value) {
|
|
75
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
76
|
+
}
|
|
77
|
+
function normalizeOptionalString(value) {
|
|
78
|
+
if (typeof value !== "string") {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const normalized = value.trim();
|
|
82
|
+
return normalized.length > 0 ? normalized : undefined;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=event-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-lifecycle.js","sourceRoot":"","sources":["../src/event-lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/examples.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../src/examples.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,qBAAqB,CAAC;IAClC,UAAU,EAAE,qBAAqB,CAAC;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,EAAE,wBAAwB,CAAC;CACzC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,oBAAoB,CAAC;IAChC,YAAY,EAAE,uBAAuB,CAAC;IACtC,cAAc,EAAE,yBAAyB,CAAC;IAC1C,IAAI,EAAE,eAAe,CAAC;IACtB,cAAc,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,EAAE,mBAAmB,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAMvD,CAAC;AAEH,eAAO,MAAM,0BAA0B,EAAE,SAAS,QAAQ,CAAC,kBAAkB,CAAC,EAgD5E,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,CAAC,WAAW,CAAC,EA6V9D,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,QAAQ,CAAC,YAAY,CAAC,EAiFhE,CAAC;AAEH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,CAAC,WAAW,CAAC,EAkC9D,CAAC;AAEH,eAAO,MAAM,0BAA0B,EAAE,SAAS,QAAQ,CAAC,wBAAwB,CAAC,EAsBlF,CAAC;AAEH,eAAO,MAAM,uBAAuB,EAAE,SAAS,QAAQ,CAAC,qBAAqB,CAAC,EAmC5E,CAAC;AAEH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,mBAAmB,CA+IlE,CAAC;AAEH,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,yBAAyB,CAwH9E,CAAC;AAEH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,mBAAmB,EAAE,MAAM,CAAC,CAyMzF,CAAC"}
|
package/dist/examples.js
CHANGED
|
@@ -1,67 +1,10 @@
|
|
|
1
|
+
import { CURRENT_VAULT_FORMAT_VERSION } from "./constants.js";
|
|
1
2
|
export const exampleVaultMetadata = Object.freeze({
|
|
2
|
-
|
|
3
|
+
formatVersion: CURRENT_VAULT_FORMAT_VERSION,
|
|
3
4
|
vaultId: "vault_01JNV40W8VFYQ2H7CMJY5A9R4K",
|
|
4
5
|
createdAt: "2026-03-12T14:00:00Z",
|
|
5
6
|
title: "Murph Vault",
|
|
6
7
|
timezone: "America/New_York",
|
|
7
|
-
idPolicy: {
|
|
8
|
-
format: "prefix_ulid",
|
|
9
|
-
prefixes: {
|
|
10
|
-
allergy: "alg",
|
|
11
|
-
assessment: "asmt",
|
|
12
|
-
audit: "aud",
|
|
13
|
-
condition: "cond",
|
|
14
|
-
document: "doc",
|
|
15
|
-
event: "evt",
|
|
16
|
-
experiment: "exp",
|
|
17
|
-
family: "fam",
|
|
18
|
-
food: "food",
|
|
19
|
-
goal: "goal",
|
|
20
|
-
meal: "meal",
|
|
21
|
-
pack: "pack",
|
|
22
|
-
profileSnapshot: "psnap",
|
|
23
|
-
provider: "prov",
|
|
24
|
-
recipe: "rcp",
|
|
25
|
-
protocol: "prot",
|
|
26
|
-
sample: "smp",
|
|
27
|
-
transform: "xfm",
|
|
28
|
-
variant: "var",
|
|
29
|
-
vault: "vault",
|
|
30
|
-
workoutFormat: "wfmt",
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
paths: {
|
|
34
|
-
allergiesRoot: "bank/allergies",
|
|
35
|
-
assessmentLedgerRoot: "ledger/assessments",
|
|
36
|
-
conditionsRoot: "bank/conditions",
|
|
37
|
-
coreDocument: "CORE.md",
|
|
38
|
-
familyRoot: "bank/family",
|
|
39
|
-
foodsRoot: "bank/foods",
|
|
40
|
-
geneticsRoot: "bank/genetics",
|
|
41
|
-
goalsRoot: "bank/goals",
|
|
42
|
-
journalRoot: "journal",
|
|
43
|
-
experimentsRoot: "bank/experiments",
|
|
44
|
-
profileCurrentDocument: "bank/profile/current.md",
|
|
45
|
-
profileRoot: "bank/profile",
|
|
46
|
-
profileSnapshotsRoot: "ledger/profile-snapshots",
|
|
47
|
-
providersRoot: "bank/providers",
|
|
48
|
-
recipesRoot: "bank/recipes",
|
|
49
|
-
workoutFormatsRoot: "bank/workout-formats",
|
|
50
|
-
rawAssessmentsRoot: "raw/assessments",
|
|
51
|
-
rawRoot: "raw",
|
|
52
|
-
eventsRoot: "ledger/events",
|
|
53
|
-
protocolsRoot: "bank/protocols",
|
|
54
|
-
samplesRoot: "ledger/samples",
|
|
55
|
-
auditRoot: "audit",
|
|
56
|
-
exportsRoot: "exports",
|
|
57
|
-
},
|
|
58
|
-
shards: {
|
|
59
|
-
assessments: "ledger/assessments/YYYY/YYYY-MM.jsonl",
|
|
60
|
-
events: "ledger/events/YYYY/YYYY-MM.jsonl",
|
|
61
|
-
profileSnapshots: "ledger/profile-snapshots/YYYY/YYYY-MM.jsonl",
|
|
62
|
-
samples: "ledger/samples/<stream>/YYYY/YYYY-MM.jsonl",
|
|
63
|
-
audit: "audit/YYYY/YYYY-MM.jsonl",
|
|
64
|
-
},
|
|
65
8
|
});
|
|
66
9
|
export const exampleInboxCaptureRecords = Object.freeze([
|
|
67
10
|
{
|
|
@@ -69,7 +12,6 @@ export const exampleInboxCaptureRecords = Object.freeze([
|
|
|
69
12
|
captureId: "cap_3f9f0d778d89c3beec6b8a13dc",
|
|
70
13
|
identityKey: "imessage\u0000self\u0000msg-123",
|
|
71
14
|
eventId: "evt_01JNV41B483QH9GQ1Y08D7RMTA",
|
|
72
|
-
auditId: "aud_01JNV45RHN0TQ9ZXE0A7YSE1YQ",
|
|
73
15
|
source: "imessage",
|
|
74
16
|
accountId: "self",
|
|
75
17
|
externalId: "msg-123",
|
|
@@ -138,6 +80,16 @@ export const exampleEventRecords = Object.freeze([
|
|
|
138
80
|
tags: ["clinic", "pdf"],
|
|
139
81
|
relatedIds: ["doc_01JNV41Q9MN0S1R6ZMW7FGD9DG"],
|
|
140
82
|
rawRefs: ["raw/documents/2026/03/doc_01JNV41Q9MN0S1R6ZMW7FGD9DG/visit-summary.pdf"],
|
|
83
|
+
attachments: [
|
|
84
|
+
{
|
|
85
|
+
role: "source_document",
|
|
86
|
+
kind: "document",
|
|
87
|
+
relativePath: "raw/documents/2026/03/doc_01JNV41Q9MN0S1R6ZMW7FGD9DG/visit-summary.pdf",
|
|
88
|
+
mediaType: "application/pdf",
|
|
89
|
+
sha256: "1111111111111111111111111111111111111111111111111111111111111111",
|
|
90
|
+
originalFileName: "visit-summary.pdf",
|
|
91
|
+
},
|
|
92
|
+
],
|
|
141
93
|
documentId: "doc_01JNV41Q9MN0S1R6ZMW7FGD9DG",
|
|
142
94
|
documentPath: "raw/documents/2026/03/doc_01JNV41Q9MN0S1R6ZMW7FGD9DG/visit-summary.pdf",
|
|
143
95
|
mimeType: "application/pdf",
|
|
@@ -156,6 +108,16 @@ export const exampleEventRecords = Object.freeze([
|
|
|
156
108
|
tags: ["meal", "lunch"],
|
|
157
109
|
relatedIds: ["meal_01JNV42NP0KH6JQXMZM1G0V6SE"],
|
|
158
110
|
rawRefs: ["raw/meals/2026/03/meal_01JNV42NP0KH6JQXMZM1G0V6SE/photo-01.jpg"],
|
|
111
|
+
attachments: [
|
|
112
|
+
{
|
|
113
|
+
role: "photo",
|
|
114
|
+
kind: "photo",
|
|
115
|
+
relativePath: "raw/meals/2026/03/meal_01JNV42NP0KH6JQXMZM1G0V6SE/photo-01.jpg",
|
|
116
|
+
mediaType: "image/jpeg",
|
|
117
|
+
sha256: "2222222222222222222222222222222222222222222222222222222222222222",
|
|
118
|
+
originalFileName: "photo-01.jpg",
|
|
119
|
+
},
|
|
120
|
+
],
|
|
159
121
|
mealId: "meal_01JNV42NP0KH6JQXMZM1G0V6SE",
|
|
160
122
|
photoPaths: ["raw/meals/2026/03/meal_01JNV42NP0KH6JQXMZM1G0V6SE/photo-01.jpg"],
|
|
161
123
|
audioPaths: [],
|
|
@@ -302,6 +264,14 @@ export const exampleEventRecords = Object.freeze([
|
|
|
302
264
|
activityType: "walk",
|
|
303
265
|
durationMinutes: 42,
|
|
304
266
|
distanceKm: 3.4,
|
|
267
|
+
workout: {
|
|
268
|
+
sourceApp: "oura",
|
|
269
|
+
sourceWorkoutId: "walk-01JNV44WS3W0R27XPTKFC3QFJA",
|
|
270
|
+
startedAt: "2026-03-12T17:18:00Z",
|
|
271
|
+
endedAt: "2026-03-12T18:00:00Z",
|
|
272
|
+
sessionNote: "Evening walk",
|
|
273
|
+
exercises: [],
|
|
274
|
+
},
|
|
305
275
|
},
|
|
306
276
|
{
|
|
307
277
|
schemaVersion: "murph.event.v1",
|
|
@@ -315,20 +285,19 @@ export const exampleEventRecords = Object.freeze([
|
|
|
315
285
|
note: "Paused the first rep on each work set.",
|
|
316
286
|
activityType: "strength-training",
|
|
317
287
|
durationMinutes: 20,
|
|
318
|
-
|
|
319
|
-
{
|
|
320
|
-
exercise: "Pushups",
|
|
321
|
-
setCount: 4,
|
|
322
|
-
repsPerSet: 20,
|
|
323
|
-
},
|
|
288
|
+
attachments: [
|
|
324
289
|
{
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
290
|
+
role: "media_1",
|
|
291
|
+
kind: "photo",
|
|
292
|
+
relativePath: "raw/workouts/2026/03/evt_01JNV44WS3W0R27XPTKFC3QFJB/progress-front.jpg",
|
|
293
|
+
mediaType: "image/jpeg",
|
|
294
|
+
sha256: "3333333333333333333333333333333333333333333333333333333333333333",
|
|
295
|
+
originalFileName: "progress-front.jpg",
|
|
330
296
|
},
|
|
331
297
|
],
|
|
298
|
+
rawRefs: [
|
|
299
|
+
"raw/workouts/2026/03/evt_01JNV44WS3W0R27XPTKFC3QFJB/progress-front.jpg"
|
|
300
|
+
],
|
|
332
301
|
workout: {
|
|
333
302
|
sourceApp: "manual",
|
|
334
303
|
startedAt: "2026-03-12T17:55:00Z",
|
|
@@ -381,6 +350,16 @@ export const exampleEventRecords = Object.freeze([
|
|
|
381
350
|
source: "manual",
|
|
382
351
|
title: "Weekly check-in",
|
|
383
352
|
note: "Morning fasted check-in.",
|
|
353
|
+
attachments: [
|
|
354
|
+
{
|
|
355
|
+
role: "media_1",
|
|
356
|
+
kind: "photo",
|
|
357
|
+
relativePath: "raw/measurements/2026/03/evt_01JNV450A1B2C3D4E5F6G7H8JK/front.jpg",
|
|
358
|
+
mediaType: "image/jpeg",
|
|
359
|
+
sha256: "4444444444444444444444444444444444444444444444444444444444444444",
|
|
360
|
+
originalFileName: "front.jpg",
|
|
361
|
+
}
|
|
362
|
+
],
|
|
384
363
|
measurements: [
|
|
385
364
|
{ type: "weight", value: 182.4, unit: "lb" },
|
|
386
365
|
{ type: "waist", value: 33.5, unit: "in" },
|
|
@@ -713,20 +692,6 @@ export const exampleFrontmatterObjects = Object.freeze({
|
|
|
713
692
|
summary: "Default push-focused strength session I repeat most weeks.",
|
|
714
693
|
activityType: "strength-training",
|
|
715
694
|
durationMinutes: 45,
|
|
716
|
-
strengthExercises: [
|
|
717
|
-
{
|
|
718
|
-
exercise: "Pushups",
|
|
719
|
-
setCount: 4,
|
|
720
|
-
repsPerSet: 20,
|
|
721
|
-
},
|
|
722
|
-
{
|
|
723
|
-
exercise: "Incline Bench Press",
|
|
724
|
-
setCount: 4,
|
|
725
|
-
repsPerSet: 12,
|
|
726
|
-
load: 65,
|
|
727
|
-
loadUnit: "lb",
|
|
728
|
-
},
|
|
729
|
-
],
|
|
730
695
|
template: {
|
|
731
696
|
routineNote: "Add one extra triceps set if the session feels easy.",
|
|
732
697
|
exercises: [
|
|
@@ -1023,17 +988,6 @@ status: active
|
|
|
1023
988
|
summary: Default push-focused strength session I repeat most weeks.
|
|
1024
989
|
activityType: strength-training
|
|
1025
990
|
durationMinutes: 45
|
|
1026
|
-
strengthExercises:
|
|
1027
|
-
-
|
|
1028
|
-
exercise: Pushups
|
|
1029
|
-
setCount: 4
|
|
1030
|
-
repsPerSet: 20
|
|
1031
|
-
-
|
|
1032
|
-
exercise: Incline Bench Press
|
|
1033
|
-
setCount: 4
|
|
1034
|
-
repsPerSet: 12
|
|
1035
|
-
load: 65
|
|
1036
|
-
loadUnit: lb
|
|
1037
991
|
template:
|
|
1038
992
|
routineNote: Add one extra triceps set if the session feels easy.
|
|
1039
993
|
exercises:
|