@agenticprimitives/ontology 1.0.0-alpha.22 → 1.0.0-alpha.24

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.
Files changed (74) hide show
  1. package/README.md +11 -0
  2. package/cbox/card-projection-shapes.shacl.ttl +216 -0
  3. package/cbox/controlled-vocabularies.ttl +172 -4
  4. package/cbox/naming-registry-shapes.shacl.ttl +272 -0
  5. package/cbox/org-team-shapes.shacl.ttl +184 -0
  6. package/cbox/registry-vocabulary.ttl +86 -0
  7. package/cbox/run-provenance-shapes.shacl.ttl +172 -0
  8. package/context.jsonld +7 -1
  9. package/dist/arg-types.d.ts +60 -0
  10. package/dist/arg-types.d.ts.map +1 -0
  11. package/dist/arg-types.js +143 -0
  12. package/dist/arg-types.js.map +1 -0
  13. package/dist/artifacts.d.ts +4 -2
  14. package/dist/artifacts.d.ts.map +1 -1
  15. package/dist/artifacts.js +22 -0
  16. package/dist/artifacts.js.map +1 -1
  17. package/dist/contact-fields.d.ts +28 -0
  18. package/dist/contact-fields.d.ts.map +1 -0
  19. package/dist/contact-fields.js +38 -0
  20. package/dist/contact-fields.js.map +1 -0
  21. package/dist/decisions.d.ts +69 -0
  22. package/dist/decisions.d.ts.map +1 -0
  23. package/dist/decisions.js +98 -0
  24. package/dist/decisions.js.map +1 -0
  25. package/dist/household.d.ts +19 -0
  26. package/dist/household.d.ts.map +1 -0
  27. package/dist/household.js +41 -0
  28. package/dist/household.js.map +1 -0
  29. package/dist/index.d.ts +230 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +275 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/party-roles.d.ts +106 -0
  34. package/dist/party-roles.d.ts.map +1 -0
  35. package/dist/party-roles.js +305 -0
  36. package/dist/party-roles.js.map +1 -0
  37. package/dist/plan-shapes.d.ts +18 -0
  38. package/dist/plan-shapes.d.ts.map +1 -0
  39. package/dist/plan-shapes.js +38 -0
  40. package/dist/plan-shapes.js.map +1 -0
  41. package/dist/relations.d.ts +44 -0
  42. package/dist/relations.d.ts.map +1 -0
  43. package/dist/relations.js +104 -0
  44. package/dist/relations.js.map +1 -0
  45. package/dist/run-provenance-context.d.ts +211 -0
  46. package/dist/run-provenance-context.d.ts.map +1 -0
  47. package/dist/run-provenance-context.js +219 -0
  48. package/dist/run-provenance-context.js.map +1 -0
  49. package/dist/vault-records.d.ts +74 -0
  50. package/dist/vault-records.d.ts.map +1 -0
  51. package/dist/vault-records.js +330 -0
  52. package/dist/vault-records.js.map +1 -0
  53. package/mappings/agent-discovery-standards.ttl +24 -3
  54. package/mappings/collaboration-crosswalk-organization.ttl +22 -0
  55. package/mappings/collaboration-crosswalk-skills.ttl +5 -0
  56. package/package.json +4 -2
  57. package/run-provenance.jsonld +106 -0
  58. package/tbox/actor-context.ttl +11 -0
  59. package/tbox/agent-resolution.ttl +6 -6
  60. package/tbox/card-projection.ttl +350 -0
  61. package/tbox/contact.ttl +61 -0
  62. package/tbox/context.ttl +114 -0
  63. package/tbox/coordination.ttl +17 -0
  64. package/tbox/core.ttl +232 -12
  65. package/tbox/execution.ttl +168 -0
  66. package/tbox/household.ttl +142 -0
  67. package/tbox/interaction.ttl +13 -0
  68. package/tbox/naming.ttl +114 -0
  69. package/tbox/org.ttl +188 -4
  70. package/tbox/profile.ttl +7 -0
  71. package/tbox/prov-imports.ttl +65 -0
  72. package/tbox/registry.ttl +159 -4
  73. package/tbox/skills.ttl +62 -0
  74. package/tbox/values.ttl +81 -0
@@ -0,0 +1,172 @@
1
+ # C-box — SHACL shapes for a harness run's provenance record (spec 389 W2).
2
+ #
3
+ # WHAT THESE ARE AND ARE NOT. A run's vault record (`run.provenance:<runRef>`) is a PROV graph: one
4
+ # ep-plan:ExecutionTraceBundle holding the run (apexec:ServiceExecution), its steps, what they used and
5
+ # what they generated. These shapes say what makes such a graph VALID AS EVIDENCE — a step that ended
6
+ # before it started, a completed capability step with no mandate behind it, a completed step with no
7
+ # receipt, a reference to nothing, a member missing from the bundle, a literal that carries an address —
8
+ # each is a record that reads fine today and cannot be trusted in a year.
9
+ #
10
+ # NEVER PERMISSION. Conformance does not mean the run was authorized, and a REFUSED step is fully
11
+ # shape-valid (R3 targets only COMPLETED capability steps): refusing to record a refusal would delete the
12
+ # evidence an audit most needs (ADR-0058's rule, unchanged). No verifier reads these shapes or the record
13
+ # they validate (spec 354 §1 / ADR-0041). They run in CI over records the projector built, and over the
14
+ # forged / truncated / leaking twins that must fail them.
15
+ #
16
+ # ENGINE NOTES. One sh:sparql per NodeShape (shacl-engine compiles them as one unit). sh:targetClass
17
+ # relies on the rdfs:subClassOf* closure the house harness materializes. R5 and R6 are scoped to the
18
+ # bundle's own members (`ep-plan:hasTraceElement`) so the T-box unioned into the data graph — whose
19
+ # comments legitimately quote addresses — is never in scope.
20
+
21
+ @prefix apexec: <https://agenticprimitives.dev/ns/execution#> .
22
+ @prefix apvr: <https://agenticprimitives.dev/ns/verification-receipt#> .
23
+ @prefix prov: <http://www.w3.org/ns/prov#> .
24
+ @prefix p-plan: <http://purl.org/net/p-plan#> .
25
+ @prefix ep-plan: <https://w3id.org/ep-plan#> .
26
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
27
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
28
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
29
+
30
+ # ─── R1 · temporal order ─────────────────────────────────────────────────────
31
+
32
+ apexec:ActivityTemporalOrderShape a sh:NodeShape ;
33
+ rdfs:label "R1a — an activity ends no earlier than it starts" ;
34
+ sh:targetClass prov:Activity ;
35
+ sh:sparql [
36
+ sh:message "R1: the activity ended before it started — a record with time running backwards is not evidence (spec 389 W2)." ;
37
+ sh:select """
38
+ SELECT $this ?started ?ended WHERE {
39
+ $this <http://www.w3.org/ns/prov#startedAtTime> ?started ;
40
+ <http://www.w3.org/ns/prov#endedAtTime> ?ended .
41
+ FILTER(STR(?ended) < STR(?started))
42
+ }
43
+ """ ;
44
+ ] .
45
+
46
+ apexec:RunTemporalOrderShape a sh:NodeShape ;
47
+ rdfs:label "R1b — a step ends no later than its run" ;
48
+ sh:targetClass apexec:ServiceExecution ;
49
+ sh:sparql [
50
+ sh:message "R1: a step of this run ended after the run itself ended (spec 389 W2)." ;
51
+ sh:select """
52
+ SELECT $this ?step ?stepEnd ?runEnd WHERE {
53
+ $this <https://agenticprimitives.dev/ns/execution#hasStep> ?step ;
54
+ <http://www.w3.org/ns/prov#endedAtTime> ?runEnd .
55
+ ?step <http://www.w3.org/ns/prov#endedAtTime> ?stepEnd .
56
+ FILTER(STR(?stepEnd) > STR(?runEnd))
57
+ }
58
+ """ ;
59
+ ] .
60
+
61
+ # ─── R2 · references resolve; generation is mutual ──────────────────────────
62
+
63
+ apexec:StepUsageResolvableShape a sh:NodeShape ;
64
+ rdfs:label "R2 — what a step used is in the graph; what it generated points back" ;
65
+ sh:targetClass prov:Activity ;
66
+ sh:sparql [
67
+ sh:message "R2: the activity used or generated something the graph does not describe — a reference to nothing, or a generated entity that does not name this activity as its generator (spec 389 W2)." ;
68
+ sh:select """
69
+ SELECT $this ?ref WHERE {
70
+ {
71
+ { $this <http://www.w3.org/ns/prov#used> ?ref } UNION { $this <https://agenticprimitives.dev/ns/verification-receipt#usedDelegation> ?ref }
72
+ FILTER NOT EXISTS { ?ref a ?anyType }
73
+ }
74
+ UNION
75
+ {
76
+ $this <http://www.w3.org/ns/prov#generated> ?ref .
77
+ FILTER NOT EXISTS { ?ref <http://www.w3.org/ns/prov#wasGeneratedBy> $this }
78
+ }
79
+ }
80
+ """ ;
81
+ ] .
82
+
83
+ # ─── R3 · a completed capability step ran under a mandate that allowed it ────
84
+
85
+ apexec:CapabilityStepMandateShape a sh:NodeShape ;
86
+ rdfs:label "R3 — a completed capability step presented a mandate and the verdict was allow" ;
87
+ sh:target [
88
+ sh:select """
89
+ SELECT ?this WHERE {
90
+ ?this <https://agenticprimitives.dev/ns/execution#realizesCapability> ?cap ;
91
+ <https://agenticprimitives.dev/ns/execution#completionState> <https://agenticprimitives.dev/ns/execution#Completed> .
92
+ }
93
+ """ ;
94
+ ] ;
95
+ sh:property [
96
+ sh:path apvr:usedDelegation ;
97
+ sh:minCount 1 ; sh:nodeKind sh:IRI ;
98
+ sh:message "R3: a COMPLETED capability step names no mandate (apvr:usedDelegation) — a consequential act with nothing behind it is a forged record, not a run (spec 389 W2; spec 350: every consequential step presents a mandate)." ;
99
+ ] ;
100
+ sh:property [
101
+ sh:path apexec:authorityDecision ;
102
+ sh:minCount 1 ; sh:in ( "allow" ) ;
103
+ sh:message "R3: a COMPLETED capability step records a verdict other than allow — a step that completed under a deny is a record that contradicts itself (spec 389 W2)." ;
104
+ ] .
105
+
106
+ # ─── R4 · a completed step left its receipt ──────────────────────────────────
107
+
108
+ apexec:CompletedStepReceiptShape a sh:NodeShape ;
109
+ rdfs:label "R4 — a completed step carries its receipt digest and generated its receipt" ;
110
+ sh:target [
111
+ sh:select """
112
+ SELECT ?this WHERE {
113
+ ?this <http://purl.org/net/p-plan#correspondsToStep> ?planStep ;
114
+ <https://agenticprimitives.dev/ns/execution#completionState> <https://agenticprimitives.dev/ns/execution#Completed> .
115
+ }
116
+ """ ;
117
+ ] ;
118
+ sh:property [
119
+ sh:path apexec:receiptDigest ;
120
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ; sh:pattern "^0x[0-9a-f]{64}$" ;
121
+ sh:message "R4: a COMPLETED step carries no receipt digest (or not a sha256) — the receipt is the commitment to what was done; without it the step is a claim (spec 389 W2; spec 381)." ;
122
+ ] ;
123
+ sh:sparql [
124
+ sh:message "R4: a COMPLETED step generated no apexec:StepReceipt entity — the digest on the activity and the receipt in the graph must both be there (spec 389 W2)." ;
125
+ sh:select """
126
+ SELECT $this WHERE {
127
+ FILTER NOT EXISTS {
128
+ $this <http://www.w3.org/ns/prov#generated> ?r .
129
+ ?r a <https://agenticprimitives.dev/ns/execution#StepReceipt> .
130
+ }
131
+ }
132
+ """ ;
133
+ ] .
134
+
135
+ # ─── R5 · every node of the run is a member of its bundle ────────────────────
136
+
137
+ apexec:ExecutionTraceBundleMembershipShape a sh:NodeShape ;
138
+ rdfs:label "R5 — every activity, agent and entity of the run is a hasTraceElement of the bundle" ;
139
+ sh:targetClass ep-plan:ExecutionTraceBundle ;
140
+ sh:property [
141
+ sh:path prov:wasAttributedTo ;
142
+ sh:minCount 1 ; sh:nodeKind sh:IRI ;
143
+ sh:message "R5: the bundle is attributed to no agent — whose record is this? (spec 389 W2; the vault it lives in is the acting agent's)." ;
144
+ ] ;
145
+ sh:sparql [
146
+ sh:message "R5: a node of the run is not a member of its bundle (ep-plan:hasTraceElement) — a graph whose members are not listed cannot be checked for what it omits (spec 389 W2)." ;
147
+ sh:select """
148
+ SELECT $this ?node WHERE {
149
+ { ?node a <http://www.w3.org/ns/prov#Activity> } UNION { ?node a <http://www.w3.org/ns/prov#Entity> } UNION { ?node a <http://www.w3.org/ns/prov#Agent> }
150
+ FILTER(?node != $this)
151
+ FILTER NOT EXISTS { $this <https://w3id.org/ep-plan#hasTraceElement> ?node }
152
+ FILTER NOT EXISTS { ?node a <http://www.w3.org/2002/07/owl#Class> }
153
+ }
154
+ """ ;
155
+ ] .
156
+
157
+ # ─── R6 · no plaintext: no address, no long literal, among the bundle's members ─
158
+
159
+ apexec:NoPlaintextInRunProvenanceShape a sh:NodeShape ;
160
+ rdfs:label "R6 — no literal of the run carries an address or a body" ;
161
+ sh:targetClass ep-plan:ExecutionTraceBundle ;
162
+ sh:sparql [
163
+ sh:message "R6: a literal in the run's provenance carries a Smart Agent address or is long enough to be a body — the record says what was done, never what it was about; a payee is a digest away from a receipt (spec 381 §1 / spec 389 W2)." ;
164
+ sh:select """
165
+ SELECT $this ?node ?p ?v WHERE {
166
+ { $this <https://w3id.org/ep-plan#hasTraceElement> ?node } UNION { BIND($this AS ?node) }
167
+ ?node ?p ?v .
168
+ FILTER(isLiteral(?v))
169
+ FILTER(REGEX(STR(?v), "(^|[^0-9a-fA-Fx])0x[0-9a-fA-F]{40}([^0-9a-fA-F]|$)") || STRLEN(STR(?v)) > 256)
170
+ }
171
+ """ ;
172
+ ] .
package/context.jsonld CHANGED
@@ -33,7 +33,11 @@
33
33
  "apsit": "https://agenticprimitives.dev/ns/situation#",
34
34
  "apfo": "https://agenticprimitives.dev/ns/familyoffice#",
35
35
  "apent": "https://agenticprimitives.dev/ns/entitlement#",
36
- "apfab": "https://agenticprimitives.dev/ns/fabric#",
36
+ "apix": "https://agenticprimitives.dev/ns/interaction#",
37
+ "apexec": "https://agenticprimitives.dev/ns/execution#",
38
+ "apactor": "https://agenticprimitives.dev/ns/actor#",
39
+ "apguide": "https://agenticprimitives.dev/ns/guidance#",
40
+ "apcoord": "https://agenticprimitives.dev/ns/coordination#",
37
41
 
38
42
  "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
39
43
  "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
@@ -42,6 +46,8 @@
42
46
  "sh": "http://www.w3.org/ns/shacl#",
43
47
  "skos": "http://www.w3.org/2004/02/skos/core#",
44
48
  "prov": "http://www.w3.org/ns/prov#",
49
+ "p-plan": "http://purl.org/net/p-plan#",
50
+ "ep-plan": "https://w3id.org/ep-plan#",
45
51
  "dul": "http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#",
46
52
  "vf": "https://w3id.org/valueflows#",
47
53
  "ufo-c": "http://purl.org/nemo/ufo-c#",
@@ -0,0 +1,60 @@
1
+ import { type ClassIri } from './party-roles.js';
2
+ export type ValueTypeName = 'Amount' | 'Asset' | 'EmailAddress' | 'DisplayLabel' | 'Flag' | 'AgentKind';
3
+ /** The T-box term each type names. Checked by `check:ontology-bindings` like every other binding. */
4
+ export declare const VALUE_TYPE_TERM: Readonly<Record<ValueTypeName, ClassIri>>;
5
+ export interface ArgTypeBindingV1 {
6
+ /** The capability whose argument this is (ADR-0051 id). */
7
+ capability: string;
8
+ /** The argument name, as the tool declares it. */
9
+ arg: string;
10
+ type: ValueTypeName;
11
+ /** What to call it when asking a person for it. */
12
+ word: string;
13
+ /** A hint that says how to answer, in the person's terms. */
14
+ hint?: string;
15
+ }
16
+ /**
17
+ * Every non-party argument, and what it is.
18
+ *
19
+ * PARTY ARGUMENTS ARE NOT HERE — they are in `PARTY_ROLES`, which answers a different question (which
20
+ * CLASS of agent may fill it, and which relation to follow to get there). One argument, one table.
21
+ */
22
+ export declare const ARG_TYPES: readonly ArgTypeBindingV1[];
23
+ /** The type bound to one capability's argument, or undefined — undefined means "not a value we read", and
24
+ * the argument passes through untouched, which is how every unbound argument behaved before this existed. */
25
+ export declare function argType(capability: string, arg: string): ArgTypeBindingV1 | undefined;
26
+ /** The value bindings of one capability — what a normaliser loops over. */
27
+ export declare function argTypesFor(capability: string): readonly ArgTypeBindingV1[];
28
+ export type ValueRead = {
29
+ ok: true;
30
+ value: string;
31
+ }
32
+ /** `said` is what the person or planner wrote, kept VERBATIM so a question can name it back. */
33
+ | {
34
+ ok: false;
35
+ said: string;
36
+ because: string;
37
+ };
38
+ /**
39
+ * Read one value of a declared type. TOTAL: it never throws and never guesses; an unreadable value comes
40
+ * back with the words that could not be read and a reason a person can act on.
41
+ */
42
+ export declare function readValue(type: ValueTypeName, raw: unknown, opts?: {
43
+ assets?: readonly string[];
44
+ }): ValueRead;
45
+ /**
46
+ * IS THIS FLAG TRUE — the one reader for a yes/no, wherever it is read.
47
+ *
48
+ * `readValue('Flag', …)` canonicalises to the STRING "true"/"false", because every value a reader
49
+ * returns is a string and an argument that changed type on the way through would be worse. Consumers
50
+ * then have to parse it, and one of them compared to the BOOLEAN instead: `remove: true` arrived as
51
+ * `"true"`, the check failed, and asking to remove somebody from a household silently re-added them.
52
+ * One helper, so that comparison is written once.
53
+ */
54
+ export declare function isFlagTrue(v: unknown): boolean;
55
+ /** The kinds an `AgentKind` argument may be, for a surface that offers them rather than a box. */
56
+ export declare function agentKindChoices(): Array<{
57
+ value: string;
58
+ label: string;
59
+ }>;
60
+ //# sourceMappingURL=arg-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arg-types.d.ts","sourceRoot":"","sources":["../src/arg-types.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKnE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,GAAG,MAAM,GAAG,WAAW,CAAC;AAExG,qGAAqG;AACrG,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAOrE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,aAAa,CAAC;IACpB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,gBAAgB,EAiBhD,CAAC;AAEF;8GAC8G;AAC9G,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAErF;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,gBAAgB,EAAE,CAE3E;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC7B,gGAAgG;GAC9F;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAOjD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAkD7G;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAI9C;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE1E"}
@@ -0,0 +1,143 @@
1
+ // WHAT AN ARGUMENT IS, AND HOW IT IS READ — spec 363 W2.
2
+ //
3
+ // `PARTY_ROLES` says what an argument's PARTY may be. This says what the rest of them ARE, and gives each
4
+ // type exactly ONE reader — so a person's phrasing is understood identically in the normaliser, the
5
+ // invoker and the form, and a refusal always names what it could not read.
6
+ //
7
+ // THE THREE INCIDENTS THIS TABLE EXISTS FOR, all in one week and all the same shape:
8
+ // · `amount: "20"` for "20 USDC" — a planner writing a REPRESENTATION it had no basis to compute.
9
+ // 0.00002 dollars moved, under a mandate every gate approved.
10
+ // · "10 usdc" answered to "how much?" and silently dropped, because one branch wanted bare digits.
11
+ // · `wants ?? 'treasury'` — a kind with no declared value set, defaulting to the only one the code
12
+ // knew, so a team invitation asked somebody for a way to reach their treasury.
13
+ //
14
+ // A READER NEVER GUESSES. It returns the canonical value, or a refusal carrying the words it could not
15
+ // read — which is what lets a question be asked ONCE more with the reason, rather than identically
16
+ // forever.
17
+ import { CLASS_FOR_SUFFIX } from './party-roles.js';
18
+ const AP_VAL_NS = 'https://agenticprimitives.dev/ns/value#';
19
+ const VAL = (local) => `${AP_VAL_NS}${local}`;
20
+ /** The T-box term each type names. Checked by `check:ontology-bindings` like every other binding. */
21
+ export const VALUE_TYPE_TERM = {
22
+ Amount: VAL('Amount'),
23
+ Asset: VAL('Asset'),
24
+ EmailAddress: VAL('EmailAddress'),
25
+ DisplayLabel: VAL('DisplayLabel'),
26
+ Flag: VAL('Flag'),
27
+ AgentKind: VAL('AgentKind'),
28
+ };
29
+ /**
30
+ * Every non-party argument, and what it is.
31
+ *
32
+ * PARTY ARGUMENTS ARE NOT HERE — they are in `PARTY_ROLES`, which answers a different question (which
33
+ * CLASS of agent may fill it, and which relation to follow to get there). One argument, one table.
34
+ */
35
+ export const ARG_TYPES = [
36
+ { capability: 'treasury.payment.execute', arg: 'usdc', type: 'Amount', word: 'how much', hint: 'in whole USDC — "20", "12.50"' },
37
+ { capability: 'treasury.fund', arg: 'usdc', type: 'Amount', word: 'how much', hint: 'in whole USDC — "20", "12.50"' },
38
+ // `asset` IS NOT BOUND, deliberately. On a single-token deployment it is pinned from configuration and
39
+ // nobody — planner or person — may write it, so reading it would mean validating a value no caller
40
+ // supplies and, worse, ASKING about one: "which token?" is a question with exactly one answer that the
41
+ // system already knows. The `Asset` type stays declared for a deployment with a real choice to offer.
42
+ // THE ONE THAT SENT A TREASURY REQUEST TO SOMEBODY BEING INVITED TO A TEAM. A kind, with a declared
43
+ // value set and no default: not said ⇒ asked.
44
+ { capability: 'resolution.invitation.request', arg: 'wants', type: 'AgentKind', word: 'what you need', hint: 'a treasury (to send money), an organization, a team, or another agent of theirs' },
45
+ { capability: 'profile.contact.update', arg: 'email', type: 'EmailAddress', word: 'email', hint: 'in full, like name@example.org' },
46
+ { capability: 'profile.contact.update', arg: 'firstName', type: 'DisplayLabel', word: 'first name' },
47
+ { capability: 'profile.contact.update', arg: 'lastName', type: 'DisplayLabel', word: 'last name' },
48
+ { capability: 'household.member.record', arg: 'label', type: 'DisplayLabel', word: 'what you call them' },
49
+ { capability: 'household.member.record', arg: 'remove', type: 'Flag', word: 'remove them' },
50
+ { capability: 'treasury.primary.declare', arg: 'on', type: 'Flag', word: 'set it' },
51
+ ];
52
+ /** The type bound to one capability's argument, or undefined — undefined means "not a value we read", and
53
+ * the argument passes through untouched, which is how every unbound argument behaved before this existed. */
54
+ export function argType(capability, arg) {
55
+ return ARG_TYPES.find((b) => b.capability === capability && b.arg === arg);
56
+ }
57
+ /** The value bindings of one capability — what a normaliser loops over. */
58
+ export function argTypesFor(capability) {
59
+ return ARG_TYPES.filter((b) => b.capability === capability);
60
+ }
61
+ /** A placeholder is an omission, not a value — the planner's, and never quoted back at a person. */
62
+ const PLACEHOLDER = /^<.*>$|^(unknown|tbd|n\/a|none|null|undefined|todo|xxx+)$/i;
63
+ /** Control characters, by code point: a label is shown to people, and these are not shown to anyone. */
64
+ const CONTROL_CHARS = new RegExp('[\\u0000-\\u001f\\u007f]', 'g');
65
+ /**
66
+ * Read one value of a declared type. TOTAL: it never throws and never guesses; an unreadable value comes
67
+ * back with the words that could not be read and a reason a person can act on.
68
+ */
69
+ export function readValue(type, raw, opts) {
70
+ const said = String(raw ?? '').trim();
71
+ if (!said || PLACEHOLDER.test(said))
72
+ return { ok: false, said: PLACEHOLDER.test(said) ? '' : said, because: 'nothing was given' };
73
+ switch (type) {
74
+ case 'Amount': {
75
+ // A currency word or symbol beside a figure adds no information a single-asset deployment does not
76
+ // already have; a thousands comma is punctuation. "10,50" stays unreadable rather than guessed at —
77
+ // a decimal comma and a thousands comma are the same character and only the person knows which.
78
+ const v = said.toLowerCase()
79
+ .replace(/^[$€£]/, '')
80
+ .replace(/\b(usdc|usd|dollars?|bucks?)\b/g, '')
81
+ .replace(/(\d),(?=\d{3}\b)/g, '$1')
82
+ .replace(/\s+/g, '');
83
+ return /^\d+(\.\d+)?$/.test(v)
84
+ ? { ok: true, value: v }
85
+ : { ok: false, said, because: 'that is not a figure I can read' };
86
+ }
87
+ case 'Asset': {
88
+ if (/^0x[0-9a-fA-F]{40}$/.test(said))
89
+ return { ok: true, value: said.toLowerCase() };
90
+ const known = (opts?.assets ?? []).map((a) => a.toLowerCase());
91
+ const sym = said.toLowerCase();
92
+ // A SYMBOL IS NOT AN ADDRESS. Only what this deployment configures resolves; a remembered address
93
+ // for another chain is well-formed and wrong, which is the failure that started this.
94
+ return known.includes(sym)
95
+ ? { ok: true, value: sym }
96
+ : { ok: false, said, because: 'this deployment does not have a token by that name' };
97
+ }
98
+ case 'EmailAddress':
99
+ return /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(said)
100
+ ? { ok: true, value: said }
101
+ : { ok: false, said, because: 'that is not an email address' };
102
+ case 'DisplayLabel': {
103
+ const clean = said.replace(CONTROL_CHARS, '').trim().slice(0, 120);
104
+ return clean ? { ok: true, value: clean } : { ok: false, said, because: 'that is not a name I can show' };
105
+ }
106
+ case 'Flag': {
107
+ const v = said.toLowerCase();
108
+ if (['true', 'yes', 'on', '1'].includes(v))
109
+ return { ok: true, value: 'true' };
110
+ if (['false', 'no', 'off', '0'].includes(v))
111
+ return { ok: true, value: 'false' };
112
+ return { ok: false, said, because: 'that is not a yes or a no' };
113
+ }
114
+ case 'AgentKind': {
115
+ const v = said.toLowerCase().replace(/^(a|an|the)\s+/, '').replace(/^their\s+/, '').trim();
116
+ // The vocabulary is the DERIVED AGENT TYPES (ADR-0061) — the same suffixes the naming service mints
117
+ // and `CLASS_FOR_SUFFIX` binds, never a second list that could disagree with them.
118
+ const suffixes = Object.keys(CLASS_FOR_SUFFIX);
119
+ const hit = suffixes.find((sfx) => sfx === v || `${sfx}s` === v || v.endsWith(` ${sfx}`));
120
+ return hit ? { ok: true, value: hit } : { ok: false, said, because: 'that is not a kind of agent I know' };
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * IS THIS FLAG TRUE — the one reader for a yes/no, wherever it is read.
126
+ *
127
+ * `readValue('Flag', …)` canonicalises to the STRING "true"/"false", because every value a reader
128
+ * returns is a string and an argument that changed type on the way through would be worse. Consumers
129
+ * then have to parse it, and one of them compared to the BOOLEAN instead: `remove: true` arrived as
130
+ * `"true"`, the check failed, and asking to remove somebody from a household silently re-added them.
131
+ * One helper, so that comparison is written once.
132
+ */
133
+ export function isFlagTrue(v) {
134
+ if (v === true)
135
+ return true;
136
+ const read = readValue('Flag', v);
137
+ return read.ok && read.value === 'true';
138
+ }
139
+ /** The kinds an `AgentKind` argument may be, for a surface that offers them rather than a box. */
140
+ export function agentKindChoices() {
141
+ return Object.keys(CLASS_FOR_SUFFIX).map((sfx) => ({ value: sfx, label: sfx }));
142
+ }
143
+ //# sourceMappingURL=arg-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arg-types.js","sourceRoot":"","sources":["../src/arg-types.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,10 @@
5
5
  */
6
6
  export declare const ARTIFACTS: {
7
7
  readonly context: "context.jsonld";
8
- readonly tbox: readonly ["tbox/core.ttl", "tbox/identity.ttl", "tbox/intents.ttl", "tbox/constraints.ttl", "tbox/resolution.ttl", "tbox/agreement.ttl", "tbox/payment.ttl", "tbox/fulfillment.ttl", "tbox/attestation.ttl", "tbox/skills.ttl", "tbox/geo.ttl", "tbox/content.ttl", "tbox/registry.ttl", "tbox/discovery.ttl", "tbox/trust.ttl", "tbox/security-exposure.ttl", "tbox/agent-resolution.ttl", "tbox/verification-receipt.ttl", "tbox/scope.ttl", "tbox/situation.ttl", "tbox/org.ttl", "tbox/familyoffice.ttl", "tbox/entitlement.ttl", "tbox/interaction.ttl", "tbox/messaging.ttl", "tbox/guidance.ttl", "tbox/actor-context.ttl", "tbox/context.ttl", "tbox/profile.ttl", "tbox/execution.ttl", "tbox/plan.ttl", "tbox/coordination.ttl", "tbox/engagement.ttl"];
9
- readonly cbox: readonly ["cbox/canonical-agent-id-shape.shacl.ttl", "cbox/controlled-vocabularies.ttl", "cbox/skill-vocabulary.ttl", "cbox/geo-vocabulary.ttl", "cbox/scope-vocabulary.ttl", "cbox/content-vocabulary.ttl", "cbox/discovery-graph-shapes.shacl.ttl", "cbox/interaction-vocabulary.ttl", "cbox/familyoffice-vocabulary.ttl", "cbox/familyoffice-shapes.shacl.ttl", "cbox/consultation-shapes.shacl.ttl", "cbox/interaction-shapes.shacl.ttl", "cbox/skill-grounding-vocabulary.ttl", "cbox/guidance-vocabulary.ttl", "cbox/profile-facet-vocabulary.ttl", "cbox/agent-facet-shapes.shacl.ttl", "cbox/capability-catalog-shapes.shacl.ttl"];
8
+ /** Spec 389 — the JSON-LD context a run's provenance record (`run.provenance:<runRef>`) is written under. */
9
+ readonly runProvenanceContext: "run-provenance.jsonld";
10
+ readonly tbox: readonly ["tbox/core.ttl", "tbox/identity.ttl", "tbox/contact.ttl", "tbox/naming.ttl", "tbox/intents.ttl", "tbox/constraints.ttl", "tbox/resolution.ttl", "tbox/agreement.ttl", "tbox/payment.ttl", "tbox/fulfillment.ttl", "tbox/attestation.ttl", "tbox/skills.ttl", "tbox/geo.ttl", "tbox/content.ttl", "tbox/registry.ttl", "tbox/discovery.ttl", "tbox/trust.ttl", "tbox/security-exposure.ttl", "tbox/agent-resolution.ttl", "tbox/verification-receipt.ttl", "tbox/scope.ttl", "tbox/situation.ttl", "tbox/org.ttl", "tbox/familyoffice.ttl", "tbox/entitlement.ttl", "tbox/interaction.ttl", "tbox/messaging.ttl", "tbox/guidance.ttl", "tbox/actor-context.ttl", "tbox/context.ttl", "tbox/profile.ttl", "tbox/execution.ttl", "tbox/plan.ttl", "tbox/prov-imports.ttl", "tbox/coordination.ttl", "tbox/engagement.ttl", "tbox/card-projection.ttl"];
11
+ readonly cbox: readonly ["cbox/canonical-agent-id-shape.shacl.ttl", "cbox/controlled-vocabularies.ttl", "cbox/registry-vocabulary.ttl", "cbox/skill-vocabulary.ttl", "cbox/geo-vocabulary.ttl", "cbox/scope-vocabulary.ttl", "cbox/content-vocabulary.ttl", "cbox/discovery-graph-shapes.shacl.ttl", "cbox/interaction-vocabulary.ttl", "cbox/familyoffice-vocabulary.ttl", "cbox/familyoffice-shapes.shacl.ttl", "cbox/consultation-shapes.shacl.ttl", "cbox/interaction-shapes.shacl.ttl", "cbox/skill-grounding-vocabulary.ttl", "cbox/guidance-vocabulary.ttl", "cbox/profile-facet-vocabulary.ttl", "cbox/agent-facet-shapes.shacl.ttl", "cbox/capability-catalog-shapes.shacl.ttl", "cbox/org-team-shapes.shacl.ttl", "cbox/naming-registry-shapes.shacl.ttl", "cbox/run-provenance-shapes.shacl.ttl", "cbox/card-projection-shapes.shacl.ttl"];
10
12
  readonly mappings: readonly ["mappings/spine-standards.ttl", "mappings/agent-discovery-standards.ttl", "mappings/collaboration-profile.ttl", "mappings/collaboration-crosswalk-actors.ttl", "mappings/collaboration-crosswalk-organization.ttl", "mappings/collaboration-crosswalk-messaging.ttl", "mappings/collaboration-crosswalk-intent.ttl", "mappings/collaboration-crosswalk-skills.ttl", "mappings/collaboration-crosswalk-authority.ttl", "mappings/collaboration-crosswalk-protocols.ttl", "mappings/collaboration-crosswalk-guidance.ttl", "mappings/actor-context-standards.ttl", "mappings/commerce-engagement-crosswalk.ttl"];
11
13
  };
12
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;CA+GZ,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,SAAS;;IAEpB,6GAA6G;;;;;CAmIrG,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD"}
package/dist/artifacts.js CHANGED
@@ -12,10 +12,15 @@ import { fileURLToPath } from 'node:url';
12
12
  */
13
13
  export const ARTIFACTS = {
14
14
  context: 'context.jsonld',
15
+ /** Spec 389 — the JSON-LD context a run's provenance record (`run.provenance:<runRef>`) is written under. */
16
+ runProvenanceContext: 'run-provenance.jsonld',
15
17
  tbox: [
16
18
  // Phase-1 (identity + core)
17
19
  'tbox/core.ttl',
18
20
  'tbox/identity.ttl',
21
+ 'tbox/contact.ttl',
22
+ // Typed agent naming — tld, contextual issuance, contextual reference (spec 346 §3/§11; ADR-0061)
23
+ 'tbox/naming.ttl',
19
24
  // Phase-1.5 (v2 coordination substrate spine; spec 225 §11.5)
20
25
  'tbox/intents.ttl',
21
26
  'tbox/constraints.ttl',
@@ -65,14 +70,21 @@ export const ARTIFACTS = {
65
70
  'tbox/execution.ttl',
66
71
  // P-Plan grounding (spec 332 §4; closes spec-316 W5) — the plan trichotomy
67
72
  'tbox/plan.ttl',
73
+ // PROV-O terms the substrate EMITS, declared so shapes, bindings and A-box rows target something real (spec 389)
74
+ 'tbox/prov-imports.ttl',
68
75
  // Coordination plane (spec 332 core subset; ADR-0054) — Endeavor / shared plan / participation
69
76
  'tbox/coordination.ttl',
70
77
  // Intent engagement plane (spec 336 W0 subset) — projections / probes / offers / mandates / receipts
71
78
  'tbox/engagement.ttl',
79
+ // Canonical profile / A2A Agent Card / projection / publication / external identity binding
80
+ // (spec 347 §11; ADR-0062) — a second module of the ap: core namespace.
81
+ 'tbox/card-projection.ttl',
72
82
  ],
73
83
  cbox: [
74
84
  'cbox/canonical-agent-id-shape.shacl.ttl',
75
85
  'cbox/controlled-vocabularies.ttl',
86
+ // Registry admission checks / lifecycle event kinds / derived entry status (spec 346 §7)
87
+ 'cbox/registry-vocabulary.ttl',
76
88
  // Generic skills + geo codelists — on-chain-bound kinds (lockstep, ADR-0009)
77
89
  'cbox/skill-vocabulary.ttl',
78
90
  'cbox/geo-vocabulary.ttl',
@@ -102,6 +114,16 @@ export const ARTIFACTS = {
102
114
  'cbox/agent-facet-shapes.shacl.ttl',
103
115
  // Capability catalog well-formedness, the anti-pattern axioms, and realization contracts
104
116
  'cbox/capability-catalog-shapes.shacl.ttl',
117
+ // Team affiliation / workspace / representation / responsibility shapes (spec 344 §4.6)
118
+ 'cbox/org-team-shapes.shacl.ttl',
119
+ // Typed names, contextual issuance, workspace agent + registry agents, receipts, lifecycle log
120
+ // (spec 346 §11). Structure, never permission.
121
+ 'cbox/naming-registry-shapes.shacl.ttl',
122
+ // Run provenance validity R1–R6 (spec 389 W2): what makes a run's PROV record evidence
123
+ 'cbox/run-provenance-shapes.shacl.ttl',
124
+ // Public card metadata, projection provenance (eight digests), external bindings, the
125
+ // public/private disclosure boundary (spec 347 §11)
126
+ 'cbox/card-projection-shapes.shacl.ttl',
105
127
  ],
106
128
  mappings: [
107
129
  'mappings/spine-standards.ttl',
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,yCAAyC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE;QACJ,4BAA4B;QAC5B,eAAe;QACf,mBAAmB;QACnB,8DAA8D;QAC9D,kBAAkB;QAClB,sBAAsB;QACtB,qBAAqB;QACrB,oBAAoB;QACpB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,4CAA4C;QAC5C,iBAAiB;QACjB,cAAc;QACd,kDAAkD;QAClD,kBAAkB;QAClB,oEAAoE;QACpE,mBAAmB;QACnB,oBAAoB;QACpB,gBAAgB;QAChB,4BAA4B;QAC5B,uFAAuF;QACvF,wFAAwF;QACxF,2BAA2B;QAC3B,8DAA8D;QAC9D,+BAA+B;QAC/B,yBAAyB;QACzB,gBAAgB;QAChB,oDAAoD;QACpD,oBAAoB;QACpB,cAAc;QACd,8EAA8E;QAC9E,4EAA4E;QAC5E,uBAAuB;QACvB,sBAAsB;QACtB,sBAAsB;QACtB,oBAAoB;QACpB,oFAAoF;QACpF,mBAAmB;QACnB,gEAAgE;QAChE,wBAAwB;QACxB,uFAAuF;QACvF,kBAAkB;QAClB,2FAA2F;QAC3F,2FAA2F;QAC3F,kBAAkB;QAClB,oFAAoF;QACpF,6FAA6F;QAC7F,iDAAiD;QACjD,oBAAoB;QACpB,2EAA2E;QAC3E,eAAe;QACf,+FAA+F;QAC/F,uBAAuB;QACvB,qGAAqG;QACrG,qBAAqB;KACtB;IACD,IAAI,EAAE;QACJ,yCAAyC;QACzC,kCAAkC;QAClC,6EAA6E;QAC7E,2BAA2B;QAC3B,yBAAyB;QACzB,0DAA0D;QAC1D,2BAA2B;QAC3B,oEAAoE;QACpE,6BAA6B;QAC7B,kEAAkE;QAClE,uCAAuC;QACvC,kDAAkD;QAClD,iCAAiC;QACjC,gFAAgF;QAChF,kCAAkC;QAClC,gGAAgG;QAChG,2EAA2E;QAC3E,oCAAoC;QACpC,oDAAoD;QACpD,oCAAoC;QACpC,gFAAgF;QAChF,mCAAmC;QACnC,uCAAuC;QACvC,qCAAqC;QACrC,8BAA8B;QAC9B,wFAAwF;QACxF,mCAAmC;QACnC,iDAAiD;QACjD,mCAAmC;QACnC,yFAAyF;QACzF,0CAA0C;KAC3C;IACD,QAAQ,EAAE;QACR,8BAA8B;QAC9B,wCAAwC;QACxC,wDAAwD;QACxD,oCAAoC;QACpC,6CAA6C;QAC7C,mDAAmD;QACnD,gDAAgD;QAChD,6CAA6C;QAC7C,6CAA6C;QAC7C,gDAAgD;QAChD,gDAAgD;QAChD,+CAA+C;QAC/C,yFAAyF;QACzF,sCAAsC;QACtC,uGAAuG;QACvG,4CAA4C;KAC7C;CACO,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,MAAM,YAAY,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface ContactFieldV1 {
2
+ /** The argument name an Ask, a form or a contract uses. */
3
+ arg: string;
4
+ /** The path inside the record the Home writes (`contact.firstName`, `contact.location.street`). */
5
+ path: string;
6
+ /** The T-box property it means. */
7
+ property: string;
8
+ /** The words for it. */
9
+ label: string;
10
+ /** For the planner and a form: what to put here. */
11
+ hint: string;
12
+ /** Location fields set the record's precision together (see `precisionOf`). */
13
+ location?: boolean;
14
+ }
15
+ export declare const CONTACT_FIELDS: readonly ContactFieldV1[];
16
+ export declare const CONTACT_FIELD_ARGS: readonly string[];
17
+ export declare function contactField(arg: string): ContactFieldV1 | undefined;
18
+ /** The precision an address implies from what is filled — the Home's own rule, stated once. */
19
+ export declare function precisionOf(loc: {
20
+ street?: string;
21
+ line2?: string;
22
+ postalCode?: string;
23
+ locality?: string;
24
+ region?: string;
25
+ }): 'country' | 'region' | 'locality' | 'address';
26
+ /** The record binding's property map, derived — so the binding and the field list cannot drift. */
27
+ export declare const CONTACT_PROFILE_PROPERTIES: Readonly<Record<string, string>>;
28
+ //# sourceMappingURL=contact-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-fields.d.ts","sourceRoot":"","sources":["../src/contact-fields.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,cAAc,EAanD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAqC,CAAC;AACtF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAsD;AAE3H,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAK5K;AAED,mGAAmG;AACnG,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAuE,CAAC"}
@@ -0,0 +1,38 @@
1
+ // THE CONTACT PROFILE'S FIELDS, ONCE — spec 371 §2.2 (a record edit is shaped by the record).
2
+ //
3
+ // "Set street address to 2445 Walters Drive, Erie Colorado 80516" was refused with "I can't help with
4
+ // that here" while "change my phone" worked. The Ask's edit tool, the invoker, the DO's write allow-list
5
+ // and the SKILL.md contract each carried their own hand-kept list of fields, and "street" was in none.
6
+ // This is the one list — each argument the Ask may take, where it lives in the record the Home writes
7
+ // (`vault:impact-profile`: `contact.<field>` and `contact.location.<field>`), and the T-box property it
8
+ // means. Every surface derives from it; a field added here is editable everywhere, described the same.
9
+ const APCON = 'https://agenticprimitives.dev/ns/contact#';
10
+ export const CONTACT_FIELDS = [
11
+ { arg: 'firstName', path: 'contact.firstName', property: `${APCON}givenName`, label: 'first name', hint: 'given name' },
12
+ { arg: 'lastName', path: 'contact.lastName', property: `${APCON}familyName`, label: 'last name', hint: 'family name' },
13
+ { arg: 'email', path: 'contact.email', property: `${APCON}email`, label: 'email', hint: 'an email address' },
14
+ { arg: 'phone', path: 'contact.phone', property: `${APCON}telephone`, label: 'phone', hint: 'a telephone number' },
15
+ { arg: 'organizationName', path: 'contact.organizationName', property: `${APCON}organizationName`, label: 'organization', hint: 'the organization they work with' },
16
+ { arg: 'organizationCountry', path: 'contact.organizationCountry', property: `${APCON}organizationCountry`, label: 'organization country', hint: 'where that organization is' },
17
+ { arg: 'street', path: 'contact.location.street', property: `${APCON}streetAddress`, label: 'street address', hint: 'street and number, e.g. "2445 Walters Drive"', location: true },
18
+ { arg: 'line2', path: 'contact.location.line2', property: `${APCON}streetAddressLine2`, label: 'address line 2', hint: 'apartment, suite or unit', location: true },
19
+ { arg: 'city', path: 'contact.location.locality', property: `${APCON}addressLocality`, label: 'city', hint: 'city or town, e.g. "Erie"', location: true },
20
+ { arg: 'region', path: 'contact.location.region', property: `${APCON}addressRegion`, label: 'state or province', hint: 'state or province, e.g. "Colorado"', location: true },
21
+ { arg: 'postalCode', path: 'contact.location.postalCode', property: `${APCON}postalCode`, label: 'postal code', hint: 'postal or ZIP code, e.g. "80516"', location: true },
22
+ { arg: 'country', path: 'contact.location.country', property: `${APCON}addressCountry`, label: 'country', hint: 'the country, e.g. "United States" — required for any finer address', location: true },
23
+ ];
24
+ export const CONTACT_FIELD_ARGS = CONTACT_FIELDS.map((f) => f.arg);
25
+ export function contactField(arg) { return CONTACT_FIELDS.find((f) => f.arg === arg); }
26
+ /** The precision an address implies from what is filled — the Home's own rule, stated once. */
27
+ export function precisionOf(loc) {
28
+ if (loc.street || loc.line2 || loc.postalCode)
29
+ return 'address';
30
+ if (loc.locality)
31
+ return 'locality';
32
+ if (loc.region)
33
+ return 'region';
34
+ return 'country';
35
+ }
36
+ /** The record binding's property map, derived — so the binding and the field list cannot drift. */
37
+ export const CONTACT_PROFILE_PROPERTIES = Object.fromEntries(CONTACT_FIELDS.map((f) => [f.path, f.property]));
38
+ //# sourceMappingURL=contact-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-fields.js","sourceRoot":"","sources":["../src/contact-fields.ts"],"names":[],"mappings":"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"}