sysprom 1.15.0 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/schema.json +18 -1
  2. package/dist/src/cli/commands/infer.js +31 -2
  3. package/dist/src/endpoint-types.js +23 -0
  4. package/dist/src/index.d.ts +2 -2
  5. package/dist/src/index.js +2 -2
  6. package/dist/src/mcp/server.js +42 -4
  7. package/dist/src/operations/add-node.d.ts +51 -9
  8. package/dist/src/operations/add-plan-task.d.ts +34 -6
  9. package/dist/src/operations/add-relationship.d.ts +48 -8
  10. package/dist/src/operations/check.d.ts +17 -3
  11. package/dist/src/operations/graph.d.ts +17 -3
  12. package/dist/src/operations/index.d.ts +1 -1
  13. package/dist/src/operations/index.js +1 -1
  14. package/dist/src/operations/infer-completeness.d.ts +17 -3
  15. package/dist/src/operations/infer-derived.d.ts +17 -3
  16. package/dist/src/operations/infer-impact.d.ts +1066 -13
  17. package/dist/src/operations/infer-impact.js +157 -39
  18. package/dist/src/operations/infer-lifecycle.d.ts +17 -3
  19. package/dist/src/operations/init-document.d.ts +17 -3
  20. package/dist/src/operations/json-to-markdown.d.ts +17 -3
  21. package/dist/src/operations/mark-task-done.d.ts +34 -6
  22. package/dist/src/operations/mark-task-undone.d.ts +34 -6
  23. package/dist/src/operations/markdown-to-json.d.ts +17 -3
  24. package/dist/src/operations/next-id.d.ts +17 -3
  25. package/dist/src/operations/node-history.d.ts +17 -3
  26. package/dist/src/operations/plan-add-task.d.ts +34 -6
  27. package/dist/src/operations/plan-gate.d.ts +17 -3
  28. package/dist/src/operations/plan-init.d.ts +17 -3
  29. package/dist/src/operations/plan-progress.d.ts +17 -3
  30. package/dist/src/operations/plan-status.d.ts +17 -3
  31. package/dist/src/operations/query-node.d.ts +107 -17
  32. package/dist/src/operations/query-nodes.d.ts +34 -6
  33. package/dist/src/operations/query-relationships.d.ts +31 -5
  34. package/dist/src/operations/remove-node.d.ts +51 -9
  35. package/dist/src/operations/remove-relationship.d.ts +36 -7
  36. package/dist/src/operations/rename.d.ts +34 -6
  37. package/dist/src/operations/search.d.ts +34 -6
  38. package/dist/src/operations/speckit-diff.d.ts +17 -3
  39. package/dist/src/operations/speckit-export.d.ts +17 -3
  40. package/dist/src/operations/speckit-import.d.ts +17 -3
  41. package/dist/src/operations/speckit-sync.d.ts +51 -9
  42. package/dist/src/operations/state-at.d.ts +17 -3
  43. package/dist/src/operations/stats.d.ts +17 -3
  44. package/dist/src/operations/sync.d.ts +51 -9
  45. package/dist/src/operations/task-list.d.ts +17 -3
  46. package/dist/src/operations/timeline.d.ts +17 -3
  47. package/dist/src/operations/trace-from-node.d.ts +51 -9
  48. package/dist/src/operations/update-metadata.d.ts +34 -6
  49. package/dist/src/operations/update-node.d.ts +48 -8
  50. package/dist/src/operations/update-plan-task.d.ts +34 -6
  51. package/dist/src/operations/validate.d.ts +17 -3
  52. package/dist/src/schema.d.ts +70 -10
  53. package/dist/src/schema.js +21 -0
  54. package/package.json +1 -1
  55. package/schema.json +18 -1
@@ -111,8 +111,9 @@ export declare const RelationshipType: z.ZodEnum<{
111
111
  selects: "selects";
112
112
  requires: "requires";
113
113
  disables: "disables";
114
+ influence: "influence";
114
115
  }> & {
115
- is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
116
+ is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
116
117
  };
117
118
  /** A valid relationship type string. */
118
119
  export type RelationshipType = z.infer<typeof RelationshipType>;
@@ -142,9 +143,28 @@ export declare const RELATIONSHIP_TYPE_LABELS: {
142
143
  readonly selects: "Selects";
143
144
  readonly requires: "Requires";
144
145
  readonly disables: "Disables";
146
+ readonly influence: "Influence";
145
147
  };
146
148
  /** Reverse map from human-readable label to relationship type key (e.g. `"Refines"` → `"refines"`). */
147
- export declare const RELATIONSHIP_LABEL_TO_TYPE: Record<string, "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables">;
149
+ export declare const RELATIONSHIP_LABEL_TO_TYPE: Record<string, "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence">;
150
+ /** Zod schema for impact polarity (e.g. `"positive"`, `"negative"`, `"neutral"`, `"uncertain"`). */
151
+ export declare const ImpactPolarity: z.ZodEnum<{
152
+ positive: "positive";
153
+ negative: "negative";
154
+ neutral: "neutral";
155
+ uncertain: "uncertain";
156
+ }> & {
157
+ is(value: unknown): value is "positive" | "negative" | "neutral" | "uncertain";
158
+ };
159
+ /** Impact polarity annotation on relationships — indicates the valence of the impact. */
160
+ export type ImpactPolarity = z.infer<typeof ImpactPolarity>;
161
+ /** Map from impact polarity key to human-readable label. */
162
+ export declare const IMPACT_POLARITY_LABELS: {
163
+ readonly positive: "Positive";
164
+ readonly negative: "Negative";
165
+ readonly neutral: "Neutral";
166
+ readonly uncertain: "Uncertain";
167
+ };
148
168
  /** Zod schema for external reference roles (e.g. `"input"`, `"output"`, `"evidence"`). */
149
169
  export declare const ExternalReferenceRole: z.ZodEnum<{
150
170
  output: "output";
@@ -303,19 +323,31 @@ export declare const Relationship: z.ZodObject<{
303
323
  selects: "selects";
304
324
  requires: "requires";
305
325
  disables: "disables";
326
+ influence: "influence";
306
327
  }> & {
307
- is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
328
+ is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
308
329
  };
309
330
  description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]> & {
310
331
  is(value: unknown): value is string | string[];
311
332
  }>;
333
+ polarity: z.ZodOptional<z.ZodEnum<{
334
+ positive: "positive";
335
+ negative: "negative";
336
+ neutral: "neutral";
337
+ uncertain: "uncertain";
338
+ }> & {
339
+ is(value: unknown): value is "positive" | "negative" | "neutral" | "uncertain";
340
+ }>;
341
+ strength: z.ZodOptional<z.ZodNumber>;
312
342
  }, z.core.$loose> & {
313
343
  is(value: unknown): value is {
314
344
  [x: string]: unknown;
315
345
  from: string;
316
346
  to: string;
317
- type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
347
+ type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
318
348
  description?: string | string[] | undefined;
349
+ polarity?: "positive" | "negative" | "neutral" | "uncertain" | undefined;
350
+ strength?: number | undefined;
319
351
  };
320
352
  };
321
353
  /** A typed, directed connection between two nodes, with from/to IDs and a relationship type. */
@@ -367,19 +399,31 @@ declare const SysProMDocumentSchema: z.ZodObject<{
367
399
  selects: "selects";
368
400
  requires: "requires";
369
401
  disables: "disables";
402
+ influence: "influence";
370
403
  }> & {
371
- is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
404
+ is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
372
405
  };
373
406
  description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]> & {
374
407
  is(value: unknown): value is string | string[];
375
408
  }>;
409
+ polarity: z.ZodOptional<z.ZodEnum<{
410
+ positive: "positive";
411
+ negative: "negative";
412
+ neutral: "neutral";
413
+ uncertain: "uncertain";
414
+ }> & {
415
+ is(value: unknown): value is "positive" | "negative" | "neutral" | "uncertain";
416
+ }>;
417
+ strength: z.ZodOptional<z.ZodNumber>;
376
418
  }, z.core.$loose> & {
377
419
  is(value: unknown): value is {
378
420
  [x: string]: unknown;
379
421
  from: string;
380
422
  to: string;
381
- type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
423
+ type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
382
424
  description?: string | string[] | undefined;
425
+ polarity?: "positive" | "negative" | "neutral" | "uncertain" | undefined;
426
+ strength?: number | undefined;
383
427
  };
384
428
  }>>;
385
429
  external_references: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -739,19 +783,31 @@ export declare const SysProMDocument: z.ZodObject<{
739
783
  selects: "selects";
740
784
  requires: "requires";
741
785
  disables: "disables";
786
+ influence: "influence";
742
787
  }> & {
743
- is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
788
+ is(value: unknown): value is "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
744
789
  };
745
790
  description: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]> & {
746
791
  is(value: unknown): value is string | string[];
747
792
  }>;
793
+ polarity: z.ZodOptional<z.ZodEnum<{
794
+ positive: "positive";
795
+ negative: "negative";
796
+ neutral: "neutral";
797
+ uncertain: "uncertain";
798
+ }> & {
799
+ is(value: unknown): value is "positive" | "negative" | "neutral" | "uncertain";
800
+ }>;
801
+ strength: z.ZodOptional<z.ZodNumber>;
748
802
  }, z.core.$loose> & {
749
803
  is(value: unknown): value is {
750
804
  [x: string]: unknown;
751
805
  from: string;
752
806
  to: string;
753
- type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
807
+ type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
754
808
  description?: string | string[] | undefined;
809
+ polarity?: "positive" | "negative" | "neutral" | "uncertain" | undefined;
810
+ strength?: number | undefined;
755
811
  };
756
812
  }>>;
757
813
  external_references: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -839,8 +895,10 @@ export declare const SysProMDocument: z.ZodObject<{
839
895
  [x: string]: unknown;
840
896
  from: string;
841
897
  to: string;
842
- type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
898
+ type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
843
899
  description?: string | string[] | undefined;
900
+ polarity?: "positive" | "negative" | "neutral" | "uncertain" | undefined;
901
+ strength?: number | undefined;
844
902
  }[] | undefined;
845
903
  external_references?: {
846
904
  role: "output" | "input" | "context" | "evidence" | "source" | "standard" | "prior_art";
@@ -1049,8 +1107,10 @@ export declare const Node: z.ZodObject<{
1049
1107
  [x: string]: unknown;
1050
1108
  from: string;
1051
1109
  to: string;
1052
- type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables";
1110
+ type: "refines" | "realises" | "implements" | "depends_on" | "constrained_by" | "affects" | "supersedes" | "must_preserve" | "performs" | "part_of" | "precedes" | "must_follow" | "blocks" | "routes_to" | "governed_by" | "modifies" | "triggered_by" | "applies_to" | "produces" | "consumes" | "transforms_into" | "selects" | "requires" | "disables" | "influence";
1053
1111
  description?: string | string[] | undefined;
1112
+ polarity?: "positive" | "negative" | "neutral" | "uncertain" | undefined;
1113
+ strength?: number | undefined;
1054
1114
  }[] | undefined;
1055
1115
  external_references?: {
1056
1116
  role: "output" | "input" | "context" | "evidence" | "source" | "standard" | "prior_art";
@@ -132,6 +132,7 @@ const relationshipTypeDef = labelledEnum({
132
132
  selects: "Selects",
133
133
  requires: "Requires",
134
134
  disables: "Disables",
135
+ influence: "Influence",
135
136
  });
136
137
  /** Zod schema for the set of valid relationship types (e.g. `"refines"`, `"depends_on"`, `"affects"`). */
137
138
  export const RelationshipType = relationshipTypeDef.schema;
@@ -140,6 +141,19 @@ export const RELATIONSHIP_TYPE_LABELS = relationshipTypeDef.labels;
140
141
  /** Reverse map from human-readable label to relationship type key (e.g. `"Refines"` → `"refines"`). */
141
142
  export const RELATIONSHIP_LABEL_TO_TYPE = relationshipTypeDef.reverse;
142
143
  // ---------------------------------------------------------------------------
144
+ // Impact polarity — annotation on relationships for ArchiMate/SysML compatibility
145
+ // ---------------------------------------------------------------------------
146
+ const impactPolarityDef = labelledEnum({
147
+ positive: "Positive",
148
+ negative: "Negative",
149
+ neutral: "Neutral",
150
+ uncertain: "Uncertain",
151
+ });
152
+ /** Zod schema for impact polarity (e.g. `"positive"`, `"negative"`, `"neutral"`, `"uncertain"`). */
153
+ export const ImpactPolarity = impactPolarityDef.schema;
154
+ /** Map from impact polarity key to human-readable label. */
155
+ export const IMPACT_POLARITY_LABELS = impactPolarityDef.labels;
156
+ // ---------------------------------------------------------------------------
143
157
  // External reference roles
144
158
  // ---------------------------------------------------------------------------
145
159
  const externalReferenceRoleDef = labelledEnum({
@@ -220,6 +234,13 @@ export const Relationship = defineSchema(z
220
234
  to: z.string().describe("Target node ID."),
221
235
  type: RelationshipType,
222
236
  description: Text.optional(),
237
+ polarity: ImpactPolarity.optional().describe("Impact polarity — positive, negative, neutral, or uncertain."),
238
+ strength: z
239
+ .number()
240
+ .min(0)
241
+ .max(1)
242
+ .optional()
243
+ .describe("Relationship strength as a number between 0 and 1."),
223
244
  })
224
245
  .describe("A typed, directed connection between two nodes."));
225
246
  // ---------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sysprom",
3
- "version": "1.15.0",
3
+ "version": "1.16.1",
4
4
  "description": "SysProM — System Provenance Model CLI and library",
5
5
  "author": "ExaDev",
6
6
  "homepage": "https://exadev.github.io/SysProM",
package/schema.json CHANGED
@@ -458,6 +458,22 @@
458
458
  "description": "Source node ID.",
459
459
  "type": "string"
460
460
  },
461
+ "polarity": {
462
+ "description": "Impact polarity — positive, negative, neutral, or uncertain.",
463
+ "enum": [
464
+ "positive",
465
+ "negative",
466
+ "neutral",
467
+ "uncertain"
468
+ ],
469
+ "type": "string"
470
+ },
471
+ "strength": {
472
+ "description": "Relationship strength as a number between 0 and 1.",
473
+ "maximum": 1,
474
+ "minimum": 0,
475
+ "type": "number"
476
+ },
461
477
  "to": {
462
478
  "description": "Target node ID.",
463
479
  "type": "string"
@@ -487,7 +503,8 @@
487
503
  "transforms_into",
488
504
  "selects",
489
505
  "requires",
490
- "disables"
506
+ "disables",
507
+ "influence"
491
508
  ],
492
509
  "type": "string"
493
510
  }