@reallyartificial/grain 0.2.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.
@@ -0,0 +1,388 @@
1
+ /**
2
+ * AgentSpec TypeScript type definitions.
3
+ * Aligned with spec/agentspec.schema.json (source of truth).
4
+ */
5
+ export interface AgentSpec {
6
+ $schema?: string;
7
+ specVersion: "1.0";
8
+ id: string;
9
+ version: string;
10
+ extends?: string | {
11
+ id: string;
12
+ version: string;
13
+ };
14
+ meta: AgentMeta;
15
+ identity: AgentIdentity;
16
+ voice: AgentVoice;
17
+ cognition: AgentCognition;
18
+ capabilities: AgentCapabilities;
19
+ behavior: AgentBehavior;
20
+ memory: AgentMemory;
21
+ communication: AgentCommunication;
22
+ adaptation: AgentAdaptation;
23
+ observability: AgentObservability;
24
+ }
25
+ export interface AgentMeta {
26
+ name: string;
27
+ description: string;
28
+ author?: string;
29
+ license?: string;
30
+ tags?: string[];
31
+ url?: string;
32
+ model?: ModelPreference;
33
+ }
34
+ export interface ModelPreference {
35
+ minimumTier: "small" | "medium" | "large" | "frontier";
36
+ preferredProvider?: string;
37
+ preferredModel?: string;
38
+ minimumContext?: number;
39
+ requiresToolCalling?: boolean;
40
+ requiresMultimodal?: boolean;
41
+ }
42
+ export interface AgentIdentity {
43
+ name: string;
44
+ role: string;
45
+ purpose: {
46
+ primary: string;
47
+ secondary?: string[];
48
+ };
49
+ expertise: DomainExpertise[];
50
+ relationships?: AgentRelationship[];
51
+ }
52
+ export interface DomainExpertise {
53
+ domain: string;
54
+ proficiency: number;
55
+ subtopics?: string[];
56
+ }
57
+ export interface AgentRelationship {
58
+ target: string;
59
+ type: "reports-to" | "delegates-to" | "collaborates-with" | "supervises" | "escalates-to";
60
+ permissions?: ("read" | "write" | "execute" | "delegate")[];
61
+ }
62
+ export interface AgentVoice {
63
+ personality: PersonalityVector;
64
+ language: LanguageStyle;
65
+ channelOverrides?: Record<string, Partial<PersonalityVector & LanguageStyle>>;
66
+ }
67
+ export interface PersonalityVector {
68
+ formality: number;
69
+ warmth: number;
70
+ humor: number;
71
+ assertiveness: number;
72
+ verbosity: number;
73
+ confidence: number;
74
+ concreteness: number;
75
+ urgency: number;
76
+ }
77
+ export interface LanguageStyle {
78
+ locale: string;
79
+ sentenceLength: "short" | "medium" | "long";
80
+ jargonLevel: "none" | "moderate" | "heavy";
81
+ emojiUsage: "never" | "sparingly" | "frequently";
82
+ structure: "prose" | "bullets" | "mixed";
83
+ usesAnalogies: boolean;
84
+ addressing: "first-person" | "third-person" | "neutral";
85
+ }
86
+ /**
87
+ * Big Five (OCEAN) personality mapping.
88
+ * Optional — provides scientific grounding for the 8-dimension model.
89
+ * See SPECIFICATION.md for mapping details.
90
+ */
91
+ export interface BigFiveMapping {
92
+ openness: number;
93
+ conscientiousness: number;
94
+ extraversion: number;
95
+ agreeableness: number;
96
+ neuroticism: number;
97
+ }
98
+ /**
99
+ * Derives approximate Big Five scores from a PersonalityVector.
100
+ */
101
+ export declare function toBigFive(p: PersonalityVector): BigFiveMapping;
102
+ export interface AgentCognition {
103
+ reasoningStyle: ReasoningStyle;
104
+ decisionMaking: DecisionMaking;
105
+ uncertainty: UncertaintyHandling;
106
+ taskStrategy: TaskStrategy;
107
+ }
108
+ export interface ReasoningStyle {
109
+ primary: "analytical" | "creative" | "systematic" | "intuitive" | "socratic";
110
+ showReasoning: boolean;
111
+ analysisDepth: "surface" | "moderate" | "deep" | "exhaustive";
112
+ multiPerspective: boolean;
113
+ }
114
+ export interface DecisionMaking {
115
+ speed: number;
116
+ evidenceThreshold: number;
117
+ reversibilityPreference: "prefer-reversible" | "neutral" | "bias-to-action";
118
+ autonomy: "always-ask" | "ask-for-major" | "decide-unless-ambiguous" | "fully-autonomous";
119
+ }
120
+ export interface UncertaintyHandling {
121
+ lowConfidenceAction: "ask" | "hedge" | "state-assumption" | "refuse";
122
+ confidenceFloor: number;
123
+ communicateUncertainty: boolean;
124
+ conflictResolution: "ask-user" | "use-most-recent" | "use-most-authoritative" | "present-both";
125
+ }
126
+ export interface TaskStrategy {
127
+ decomposition: "top-down" | "bottom-up" | "iterative";
128
+ maxParallelism: number;
129
+ checkpointing: boolean;
130
+ blockingStrategy: "wait" | "skip-and-return" | "find-alternative" | "escalate";
131
+ }
132
+ export interface AgentCapabilities {
133
+ tools?: ToolCapability[];
134
+ skills?: SkillDefinition[];
135
+ knowledge?: KnowledgeSource[];
136
+ outputFormats?: OutputFormat[];
137
+ }
138
+ export interface ToolCapability {
139
+ id: string;
140
+ usage: string;
141
+ requiresConfirmation?: boolean;
142
+ rateLimit?: {
143
+ max: number;
144
+ per: "message" | "conversation" | "hour";
145
+ };
146
+ }
147
+ export interface SkillDefinition {
148
+ name: string;
149
+ description: string;
150
+ requiredTools?: string[];
151
+ steps?: string[];
152
+ successCriteria?: string[];
153
+ }
154
+ export interface KnowledgeSource {
155
+ id: string;
156
+ type: "embedded" | "retrieval" | "api" | "file-system" | "database";
157
+ domain: string;
158
+ freshness?: "static" | "daily" | "real-time";
159
+ priority?: number;
160
+ }
161
+ export interface OutputFormat {
162
+ format: string;
163
+ condition?: string;
164
+ }
165
+ export interface AgentBehavior {
166
+ rules: BehaviorRule[];
167
+ boundaries: Boundary[];
168
+ triggers?: BehaviorTrigger[];
169
+ escalation?: EscalationPolicy;
170
+ }
171
+ export interface BehaviorRule {
172
+ id: string;
173
+ condition: RuleCondition;
174
+ action: RuleAction;
175
+ priority?: number;
176
+ overridable?: boolean;
177
+ }
178
+ export type RuleCondition = {
179
+ type: "always";
180
+ } | {
181
+ type: "when-topic";
182
+ topics: string[];
183
+ } | {
184
+ type: "when-sentiment";
185
+ sentiment: "positive" | "negative" | "neutral" | "frustrated";
186
+ } | {
187
+ type: "when-context";
188
+ context: string;
189
+ } | {
190
+ type: "when-user-role";
191
+ roles: string[];
192
+ } | {
193
+ type: "when-capability-missing";
194
+ capability: string;
195
+ } | {
196
+ type: "when-confidence-below";
197
+ threshold: number;
198
+ } | {
199
+ type: "compound";
200
+ operator: "and" | "or";
201
+ conditions: RuleCondition[];
202
+ };
203
+ export type RuleAction = {
204
+ type: "respond-with-style";
205
+ style: Partial<PersonalityVector>;
206
+ } | {
207
+ type: "use-tool";
208
+ tool: string;
209
+ params?: Record<string, unknown>;
210
+ } | {
211
+ type: "escalate";
212
+ target: string;
213
+ reason: string;
214
+ } | {
215
+ type: "refuse";
216
+ message: string;
217
+ } | {
218
+ type: "redirect";
219
+ target: string;
220
+ } | {
221
+ type: "adjust-depth";
222
+ depth: "surface" | "moderate" | "deep";
223
+ } | {
224
+ type: "require-confirmation";
225
+ } | {
226
+ type: "log-event";
227
+ event: string;
228
+ level: "info" | "warn" | "error";
229
+ } | {
230
+ type: "custom";
231
+ handler: string;
232
+ params?: Record<string, unknown>;
233
+ };
234
+ export interface Boundary {
235
+ description: string;
236
+ category: "content" | "action" | "data" | "scope" | "safety";
237
+ enforcement: "hard" | "soft";
238
+ onViolation: "refuse" | "warn" | "redirect" | "escalate";
239
+ message?: string;
240
+ }
241
+ export interface BehaviorTrigger {
242
+ event: TriggerEvent;
243
+ action: RuleAction;
244
+ cooldown?: number;
245
+ }
246
+ export type TriggerEvent = {
247
+ type: "keyword";
248
+ keywords: string[];
249
+ } | {
250
+ type: "intent";
251
+ intents: string[];
252
+ } | {
253
+ type: "silence";
254
+ durationSeconds: number;
255
+ } | {
256
+ type: "error";
257
+ errorType?: string;
258
+ } | {
259
+ type: "threshold";
260
+ metric: string;
261
+ operator: "gt" | "lt" | "eq";
262
+ value: number;
263
+ } | {
264
+ type: "schedule";
265
+ cron: string;
266
+ };
267
+ export interface EscalationPolicy {
268
+ conditions: EscalationCondition[];
269
+ defaultTarget: string;
270
+ handoffStrategy: "full-transcript" | "summary" | "structured-handoff";
271
+ maxRetries?: number;
272
+ }
273
+ export interface EscalationCondition {
274
+ trigger: "confidence-low" | "user-frustrated" | "out-of-scope" | "safety-concern" | "repeated-failure" | "explicit-request";
275
+ threshold?: number;
276
+ target?: string;
277
+ }
278
+ export interface AgentMemory {
279
+ retention: RetentionPolicy[];
280
+ contextStrategy: ContextStrategy;
281
+ persistentState?: StateSchema[];
282
+ }
283
+ export interface RetentionPolicy {
284
+ category: "user-preferences" | "conversation-history" | "task-state" | "learned-patterns" | "corrections" | "facts";
285
+ duration: "conversation" | "session" | "days" | "permanent";
286
+ days?: number;
287
+ maxItems?: number;
288
+ priority?: number;
289
+ }
290
+ export interface ContextStrategy {
291
+ overflow: "summarize" | "sliding-window" | "smart-select" | "truncate";
292
+ prioritize: ("recent" | "user-stated" | "task-relevant" | "corrections")[];
293
+ autoSummarize: boolean;
294
+ }
295
+ export interface StateSchema {
296
+ key: string;
297
+ type: "string" | "number" | "boolean" | "array" | "object";
298
+ description: string;
299
+ defaultValue?: unknown;
300
+ agentWritable: boolean;
301
+ }
302
+ export interface AgentCommunication {
303
+ channels: ChannelConfig[];
304
+ input: InputProcessing;
305
+ output: OutputProcessing;
306
+ interAgent?: InterAgentConfig;
307
+ }
308
+ export interface ChannelConfig {
309
+ channel: string;
310
+ enabled: boolean;
311
+ voiceOverrides?: Partial<PersonalityVector & LanguageStyle>;
312
+ constraints?: {
313
+ maxLength?: number;
314
+ supportsMarkdown?: boolean;
315
+ supportsImages?: boolean;
316
+ supportsButtons?: boolean;
317
+ };
318
+ }
319
+ export interface InputProcessing {
320
+ languages: string[];
321
+ typoTolerance: boolean;
322
+ ambiguityResolution: "ask" | "best-guess" | "ask-if-high-stakes";
323
+ modalities: ("text" | "image" | "audio" | "file")[];
324
+ }
325
+ export interface OutputProcessing {
326
+ defaultFormat: "text" | "markdown" | "html" | "json";
327
+ citations: "always" | "when-available" | "never";
328
+ maxLength?: {
329
+ value: number;
330
+ unit: "tokens" | "characters";
331
+ };
332
+ structuredOutput: boolean;
333
+ }
334
+ export interface InterAgentConfig {
335
+ protocols: ("a2a" | "mcp" | "custom")[];
336
+ exposedCapabilities: string[];
337
+ requestableCapabilities: string[];
338
+ auth?: "none" | "token" | "mutual-tls" | "oauth";
339
+ }
340
+ export interface AgentAdaptation {
341
+ enabled: boolean;
342
+ driftBounds?: DriftBound[];
343
+ learning?: LearningConfig;
344
+ feedback?: FeedbackConfig;
345
+ }
346
+ export interface DriftBound {
347
+ parameter: string;
348
+ maxDrift: number;
349
+ driftRate: "immediate" | "gradual" | "slow";
350
+ resetsPerConversation: boolean;
351
+ }
352
+ export interface LearningConfig {
353
+ sources: ("user-feedback" | "task-outcomes" | "corrections" | "examples")[];
354
+ minSamples: number;
355
+ requiresApproval: boolean;
356
+ }
357
+ export interface FeedbackConfig {
358
+ collection: "explicit-ask" | "implicit-signals" | "both";
359
+ application: "immediate" | "batched" | "manual-review";
360
+ conflictResolution: "latest-wins" | "majority-wins" | "ask-user";
361
+ }
362
+ export interface AgentObservability {
363
+ logging: LoggingConfig;
364
+ metrics: MetricDefinition[];
365
+ successCriteria: SuccessCriterion[];
366
+ }
367
+ export interface LoggingConfig {
368
+ level: "debug" | "info" | "warn" | "error";
369
+ alwaysLog: ("tool-use" | "escalation" | "boundary-hit" | "error" | "rule-fired")[];
370
+ conversationLogging: "full" | "summary" | "none";
371
+ piiHandling: "redact" | "hash" | "allow";
372
+ }
373
+ export interface MetricDefinition {
374
+ name: string;
375
+ description: string;
376
+ type: "counter" | "gauge" | "histogram" | "rate";
377
+ event: string;
378
+ }
379
+ export interface SuccessCriterion {
380
+ description: string;
381
+ metric: string;
382
+ target: {
383
+ operator: "gt" | "lt" | "eq" | "gte" | "lte";
384
+ value: number;
385
+ };
386
+ window?: "per-conversation" | "per-day" | "per-week";
387
+ }
388
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * AgentSpec TypeScript type definitions.
3
+ * Aligned with spec/agentspec.schema.json (source of truth).
4
+ */
5
+ /**
6
+ * Derives approximate Big Five scores from a PersonalityVector.
7
+ */
8
+ export function toBigFive(p) {
9
+ return {
10
+ openness: (p.humor + (1 - p.concreteness)) / 2,
11
+ conscientiousness: (p.formality + (1 - p.urgency) + p.concreteness) / 3,
12
+ extraversion: (p.warmth + p.assertiveness + p.verbosity) / 3,
13
+ agreeableness: (p.warmth + (1 - p.assertiveness)) / 2,
14
+ neuroticism: ((1 - p.confidence) + p.urgency) / 2,
15
+ };
16
+ }
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsHH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,CAAoB;IAC5C,OAAO;QACL,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC;QAC9C,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;QACvE,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;QAC5D,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;QACrD,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;KAClD,CAAA;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface ValidationError {
2
+ path: string;
3
+ message: string;
4
+ severity: "error" | "warning";
5
+ }
6
+ /**
7
+ * Validate an AgentSpec object against the JSON Schema.
8
+ * Returns an array of validation errors (empty = valid).
9
+ */
10
+ export declare function validateSpec(data: unknown): ValidationError[];
11
+ /**
12
+ * Validate and throw if invalid.
13
+ */
14
+ export declare function assertValid(data: unknown): void;
15
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B;AAgCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,EAAE,CAW7D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAM/C"}
@@ -0,0 +1,59 @@
1
+ import Ajv2020 from "ajv/dist/2020.js";
2
+ import { readFileSync } from "node:fs";
3
+ import { fileURLToPath } from "node:url";
4
+ import { dirname, join } from "node:path";
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+ // Load schema — try package-local first (npm install), then monorepo path (development)
8
+ const schemaPath = (() => {
9
+ const packageLocal = join(__dirname, "..", "agentspec.schema.json");
10
+ const monorepo = join(__dirname, "..", "..", "..", "spec", "agentspec.schema.json");
11
+ try {
12
+ readFileSync(packageLocal, "utf-8");
13
+ return packageLocal;
14
+ }
15
+ catch {
16
+ return monorepo;
17
+ }
18
+ })();
19
+ let _schema = null;
20
+ function getSchema() {
21
+ if (!_schema) {
22
+ _schema = JSON.parse(readFileSync(schemaPath, "utf-8"));
23
+ }
24
+ return _schema;
25
+ }
26
+ let _validateFn = null;
27
+ function getValidator() {
28
+ if (!_validateFn) {
29
+ const ajv = new Ajv2020({ allErrors: true, strict: false });
30
+ _validateFn = ajv.compile(getSchema());
31
+ }
32
+ return _validateFn;
33
+ }
34
+ /**
35
+ * Validate an AgentSpec object against the JSON Schema.
36
+ * Returns an array of validation errors (empty = valid).
37
+ */
38
+ export function validateSpec(data) {
39
+ const validate = getValidator();
40
+ const valid = validate(data);
41
+ if (valid)
42
+ return [];
43
+ return (validate.errors ?? []).map(err => ({
44
+ path: err.instancePath || "/",
45
+ message: err.message ?? "Unknown validation error",
46
+ severity: "error",
47
+ }));
48
+ }
49
+ /**
50
+ * Validate and throw if invalid.
51
+ */
52
+ export function assertValid(data) {
53
+ const errors = validateSpec(data);
54
+ if (errors.length > 0) {
55
+ const messages = errors.map(e => ` ${e.path}: ${e.message}`).join("\n");
56
+ throw new Error(`AgentSpec validation failed:\n${messages}`);
57
+ }
58
+ }
59
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAQrC,wFAAwF;AACxF,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAA;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACnF,IAAI,CAAC;QACH,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,YAAY,CAAA;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAA;AACJ,IAAI,OAAO,GAAkB,IAAI,CAAA;AAEjC,SAAS,SAAS;IAChB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,OAAQ,CAAA;AACjB,CAAC;AAED,IAAI,WAAW,GAA0C,IAAI,CAAA;AAE7D,SAAS,YAAY;IACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3D,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE5B,IAAI,KAAK;QAAE,OAAO,EAAE,CAAA;IAEpB,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG;QAC7B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,0BAA0B;QAClD,QAAQ,EAAE,OAAgB;KAC3B,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxE,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAA;IAC9D,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@reallyartificial/grain",
3
+ "version": "0.2.0",
4
+ "description": "Grain — a structured data format for describing AI agents.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "bin": {
15
+ "grain": "./dist/cli.js"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "!dist/**/*.test.*",
20
+ "agentspec.schema.json"
21
+ ],
22
+ "scripts": {
23
+ "prebuild": "cp ../../spec/agentspec.schema.json ./agentspec.schema.json 2>/dev/null || true",
24
+ "build": "tsc",
25
+ "test": "vitest run --dir src",
26
+ "prepublishOnly": "npm run build && npm test",
27
+ "validate": "tsx src/load.ts"
28
+ },
29
+ "keywords": [
30
+ "agent",
31
+ "ai-agent",
32
+ "llm",
33
+ "persona",
34
+ "grain",
35
+ "structured-data"
36
+ ],
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/anthropics/grain",
40
+ "directory": "sdk/typescript"
41
+ },
42
+ "homepage": "https://github.com/anthropics/grain#readme",
43
+ "bugs": {
44
+ "url": "https://github.com/anthropics/grain/issues"
45
+ },
46
+ "license": "MIT",
47
+ "dependencies": {
48
+ "ajv": "^8.17.0",
49
+ "ajv-formats": "^3.0.1",
50
+ "yaml": "^2.6.0"
51
+ },
52
+ "devDependencies": {
53
+ "@types/node": "^25.6.0",
54
+ "tsx": "^4.7.0",
55
+ "typescript": "^5.4.0",
56
+ "vitest": "^4.1.5"
57
+ }
58
+ }