@artemiskit/core 0.5.2 → 0.6.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/adapters/factory.d.ts +1 -1
  3. package/dist/adapters/index.d.ts +3 -3
  4. package/dist/adapters/registry.d.ts +1 -1
  5. package/dist/agent-evaluation/index.d.ts +2 -2
  6. package/dist/agent-evaluation/scorer.d.ts +1 -1
  7. package/dist/agent-workflow/catalog.d.ts +27 -0
  8. package/dist/agent-workflow/catalog.d.ts.map +1 -0
  9. package/dist/agent-workflow/index.d.ts +7 -0
  10. package/dist/agent-workflow/index.d.ts.map +1 -0
  11. package/dist/agent-workflow/parser.d.ts +7 -0
  12. package/dist/agent-workflow/parser.d.ts.map +1 -0
  13. package/dist/agent-workflow/schema.d.ts +664 -0
  14. package/dist/agent-workflow/schema.d.ts.map +1 -0
  15. package/dist/agent-workflow/simulated-tools.d.ts +35 -0
  16. package/dist/agent-workflow/simulated-tools.d.ts.map +1 -0
  17. package/dist/agent-workflow/target.d.ts +230 -0
  18. package/dist/agent-workflow/target.d.ts.map +1 -0
  19. package/dist/artifacts/index.d.ts +2 -2
  20. package/dist/artifacts/manifest.d.ts +1 -1
  21. package/dist/artifacts/types.d.ts +2 -2
  22. package/dist/comparison/eligibility.d.ts +26 -0
  23. package/dist/comparison/eligibility.d.ts.map +1 -0
  24. package/dist/comparison/index.d.ts +2 -0
  25. package/dist/comparison/index.d.ts.map +1 -0
  26. package/dist/evaluators/combined.d.ts +2 -2
  27. package/dist/evaluators/contains.d.ts +2 -2
  28. package/dist/evaluators/exact.d.ts +2 -2
  29. package/dist/evaluators/fuzzy.d.ts +2 -2
  30. package/dist/evaluators/index.d.ts +13 -13
  31. package/dist/evaluators/inline.d.ts +2 -2
  32. package/dist/evaluators/json-schema.d.ts +2 -2
  33. package/dist/evaluators/llm-grader.d.ts +2 -2
  34. package/dist/evaluators/not-contains.d.ts +2 -2
  35. package/dist/evaluators/regex.d.ts +2 -2
  36. package/dist/evaluators/similarity.d.ts +2 -2
  37. package/dist/evaluators/tool-trace.d.ts +2 -2
  38. package/dist/evaluators/types.d.ts +3 -3
  39. package/dist/index.d.ts +15 -13
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +16346 -14967
  42. package/dist/provenance/execution-provenance.d.ts +1 -1
  43. package/dist/provenance/git.d.ts +1 -1
  44. package/dist/provenance/index.d.ts +4 -4
  45. package/dist/provenance/workload-identity.d.ts +2 -2
  46. package/dist/redaction/index.d.ts +2 -2
  47. package/dist/redaction/redactor.d.ts +1 -1
  48. package/dist/runner/executor.d.ts +3 -3
  49. package/dist/runner/index.d.ts +3 -3
  50. package/dist/runner/runner.d.ts +1 -1
  51. package/dist/runner/types.d.ts +5 -5
  52. package/dist/scenario/index.d.ts +4 -4
  53. package/dist/scenario/parser.d.ts +1 -1
  54. package/dist/scenario/variables.d.ts +1 -1
  55. package/dist/storage/factory.d.ts +1 -1
  56. package/dist/storage/index.d.ts +4 -4
  57. package/dist/storage/local.d.ts +2 -2
  58. package/dist/storage/local.d.ts.map +1 -1
  59. package/dist/storage/supabase.d.ts +2 -2
  60. package/dist/storage/supabase.d.ts.map +1 -1
  61. package/dist/storage/types.d.ts +6 -2
  62. package/dist/storage/types.d.ts.map +1 -1
  63. package/dist/tools/fixture-executor.d.ts +2 -2
  64. package/dist/tools/index.d.ts +3 -3
  65. package/dist/tools/types.d.ts +1 -1
  66. package/dist/utils/index.d.ts +2 -2
  67. package/dist/validator/index.d.ts +2 -2
  68. package/dist/validator/validator.d.ts +1 -1
  69. package/package.json +4 -4
  70. package/src/agent-workflow/catalog.ts +219 -0
  71. package/src/agent-workflow/index.ts +6 -0
  72. package/src/agent-workflow/parser.ts +43 -0
  73. package/src/agent-workflow/schema.test.ts +218 -0
  74. package/src/agent-workflow/schema.ts +254 -0
  75. package/src/agent-workflow/simulated-tools.test.ts +177 -0
  76. package/src/agent-workflow/simulated-tools.ts +230 -0
  77. package/src/agent-workflow/target.test.ts +276 -0
  78. package/src/agent-workflow/target.ts +292 -0
  79. package/src/comparison/eligibility.test.ts +101 -0
  80. package/src/comparison/eligibility.ts +116 -0
  81. package/src/comparison/index.ts +8 -0
  82. package/src/index.ts +6 -0
  83. package/src/storage/local.test.ts +39 -0
  84. package/src/storage/local.ts +9 -1
  85. package/src/storage/supabase.ts +9 -1
  86. package/src/storage/types.ts +5 -1
@@ -1,5 +1,5 @@
1
1
  /** Bounded execution provenance derived from declared and observed run evidence. */
2
- import type { CaseResult, ExecutionProvenance } from '../artifacts/types';
2
+ import type { CaseResult, ExecutionProvenance } from '../artifacts/types.js';
3
3
  export declare function createExecutionProvenance(options: {
4
4
  provider: string;
5
5
  requestedModel?: string;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Git provenance utilities
3
3
  */
4
- import type { GitInfo } from '../artifacts/types';
4
+ import type { GitInfo } from '../artifacts/types.js';
5
5
  /**
6
6
  * Get git information for the current repository
7
7
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Provenance module exports
3
3
  */
4
- export { getGitInfo } from './git';
5
- export { getEnvironmentInfo } from './environment';
6
- export { createWorkloadIdentity } from './workload-identity';
7
- export { createExecutionProvenance } from './execution-provenance';
4
+ export { getGitInfo } from './git.js';
5
+ export { getEnvironmentInfo } from './environment.js';
6
+ export { createWorkloadIdentity } from './workload-identity.js';
7
+ export { createExecutionProvenance } from './execution-provenance.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Canonical, redacted workload identities for reproducible assessment evidence.
3
3
  */
4
- import type { WorkloadIdentity } from '../artifacts/types';
5
- import type { Scenario } from '../scenario/schema';
4
+ import type { WorkloadIdentity } from '../artifacts/types.js';
5
+ import type { Scenario } from '../scenario/schema.js';
6
6
  /**
7
7
  * Create independent identities for the declared workload and its evaluation
8
8
  * criteria. Input is sorted, redacted, and hashed locally; raw material is
@@ -1,3 +1,3 @@
1
- export { BUILTIN_PATTERNS, BUILTIN_REGEX_PATTERNS, DEFAULT_REDACTION_PATTERNS, RedactionConfigSchema, type BuiltinPatternName, type CaseRedactionDetails, type RedactionConfig, type RedactionMetadata, type RedactionOptions, type RedactionResult, } from './types';
2
- export { Redactor, createDefaultRedactor, createNoOpRedactor, createRedactionOptions, hashText, redactText, redactWithHash, resolvePatterns, } from './redactor';
1
+ export { BUILTIN_PATTERNS, BUILTIN_REGEX_PATTERNS, DEFAULT_REDACTION_PATTERNS, RedactionConfigSchema, type BuiltinPatternName, type CaseRedactionDetails, type RedactionConfig, type RedactionMetadata, type RedactionOptions, type RedactionResult, } from './types.js';
2
+ export { Redactor, createDefaultRedactor, createNoOpRedactor, createRedactionOptions, hashText, redactText, redactWithHash, resolvePatterns, } from './redactor.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { type RedactionConfig, type RedactionOptions, type RedactionResult } from './types';
1
+ import { type RedactionConfig, type RedactionOptions, type RedactionResult } from './types.js';
2
2
  /**
3
3
  * Resolve pattern strings to RegExp objects
4
4
  * Supports built-in pattern names and custom regex strings
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Test case executor
3
3
  */
4
- import type { CaseResult } from '../artifacts/types';
5
- import type { TestCase } from '../scenario/schema';
6
- import type { ExecutorContext } from './types';
4
+ import type { CaseResult } from '../artifacts/types.js';
5
+ import type { TestCase } from '../scenario/schema.js';
6
+ import type { ExecutorContext } from './types.js';
7
7
  /**
8
8
  * Execute a single test case
9
9
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Runner module exports
3
3
  */
4
- export * from './types';
5
- export { executeCase } from './executor';
6
- export { runScenario, runScenarios } from './runner';
4
+ export * from './types.js';
5
+ export { executeCase } from './executor.js';
6
+ export { runScenario, runScenarios } from './runner.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Scenario runner - main entry point for running test scenarios
3
3
  */
4
- import type { RunOptions, RunResult } from './types';
4
+ import type { RunOptions, RunResult } from './types.js';
5
5
  /**
6
6
  * Run a test scenario
7
7
  */
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Runner types and interfaces
3
3
  */
4
- import type { ModelClient } from '../adapters/types';
5
- import type { CaseResult, CostProvenance, ResolvedConfig, RunManifest } from '../artifacts/types';
6
- import type { RedactionConfig } from '../redaction/types';
7
- import type { Scenario } from '../scenario/schema';
8
- import type { ToolExecutor } from '../tools';
4
+ import type { ModelClient } from '../adapters/types.js';
5
+ import type { CaseResult, CostProvenance, ResolvedConfig, RunManifest } from '../artifacts/types.js';
6
+ import type { RedactionConfig } from '../redaction/types.js';
7
+ import type { Scenario } from '../scenario/schema.js';
8
+ import type { ToolExecutor } from '../tools/index.js';
9
9
  /**
10
10
  * Options for running a scenario
11
11
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Scenario module exports
3
3
  */
4
- export * from './schema';
5
- export * from './parser';
6
- export * from './variables';
7
- export * from './discovery';
4
+ export * from './schema.js';
5
+ export * from './parser.js';
6
+ export * from './variables.js';
7
+ export * from './discovery.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Scenario parser for YAML files
3
3
  */
4
- import { type Scenario } from './schema';
4
+ import { type Scenario } from './schema.js';
5
5
  /**
6
6
  * Parse a scenario from a YAML file
7
7
  */
@@ -2,7 +2,7 @@
2
2
  * Variable substitution for scenario templates
3
3
  * Supports {{variable}} syntax in strings
4
4
  */
5
- import type { Variables } from './schema';
5
+ import type { Variables } from './schema.js';
6
6
  /**
7
7
  * Substitute variables in a string using {{variable}} syntax
8
8
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Storage factory for creating storage adapters
3
3
  */
4
- import type { StorageAdapter, StorageConfig } from './types';
4
+ import type { StorageAdapter, StorageConfig } from './types.js';
5
5
  /**
6
6
  * Create a storage adapter from configuration
7
7
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Storage module exports
3
3
  */
4
- export * from './types';
5
- export { createStorageAdapter, createStorageFromEnv } from './factory';
6
- export { SupabaseStorageAdapter, type SupabaseStorageConfig } from './supabase';
7
- export { LocalStorageAdapter } from './local';
4
+ export * from './types.js';
5
+ export { createStorageAdapter, createStorageFromEnv } from './factory.js';
6
+ export { SupabaseStorageAdapter, type SupabaseStorageConfig } from './supabase.js';
7
+ export { LocalStorageAdapter } from './local.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Local filesystem storage adapter
3
3
  */
4
- import { type AnyManifest, type RedTeamManifest, type RunManifest, type StressManifest } from '../artifacts/types';
5
- import type { BaselineMetadata, BaselineStorageAdapter, ComparisonResult, ListOptions, RunListItem } from './types';
4
+ import { type AnyManifest, type RedTeamManifest, type RunManifest, type StressManifest } from '../artifacts/types.js';
5
+ import type { BaselineMetadata, BaselineStorageAdapter, ComparisonResult, ListOptions, RunListItem } from './types.js';
6
6
  export declare class LocalStorageAdapter implements BaselineStorageAdapter {
7
7
  private basePath;
8
8
  private baselinesPath;
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAC;AAyDjB,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,QAAQ,SAAmB;IAKjC,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAczC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAS5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQpD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQlD,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA0DnD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAiBjE,eAAe;YASf,SAAS;IAWvB;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;YACW,iBAAiB;IAM/B;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4B3F;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKrE;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAMzE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOlD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD;;OAEG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5D;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,mBAAmB,SAAO,GACzB,OAAO,CAAC;QACT,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,UAAU,EAAE,gBAAgB,CAAC;QAC7B,aAAa,EAAE,OAAO,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,GAAG,IAAI,CAAC;CAwBV"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAC;AAyDjB,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,QAAQ,SAAmB;IAKjC,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAczC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAS5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQpD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQlD,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA0DnD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAuBjE,eAAe;YASf,SAAS;IAWvB;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;YACW,iBAAiB;IAM/B;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4B3F;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKrE;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAMzE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOlD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD;;OAEG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5D;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,mBAAmB,SAAO,GACzB,OAAO,CAAC;QACT,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,UAAU,EAAE,gBAAgB,CAAC;QAC7B,aAAa,EAAE,OAAO,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,GAAG,IAAI,CAAC;CAyBV"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Supabase storage adapter with analytics capabilities
3
3
  */
4
- import { type RunManifest } from '../artifacts/types';
5
- import type { AnalyticsStorageAdapter, BaselineMetadata, CaseResultQueryOptions, CaseResultRecord, ComparisonResult, ListOptions, MetricsSnapshot, MetricsTrendOptions, RunListItem, TrendDataPoint } from './types';
4
+ import { type RunManifest } from '../artifacts/types.js';
5
+ import type { AnalyticsStorageAdapter, BaselineMetadata, CaseResultQueryOptions, CaseResultRecord, ComparisonResult, ListOptions, MetricsSnapshot, MetricsTrendOptions, RunListItem, TrendDataPoint } from './types.js';
6
6
  export interface SupabaseStorageConfig {
7
7
  url: string;
8
8
  anonKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/storage/supabase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/storage/supabase.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Storage types and interfaces
3
3
  */
4
- import type { AnyManifest, CaseEvaluationEvidence, RedTeamManifest, RunManifest, StressManifest } from '../artifacts/types';
4
+ import type { AnyManifest, CaseEvaluationEvidence, RedTeamManifest, RunManifest, StressManifest } from '../artifacts/types.js';
5
+ import type { ComparisonEligibility } from '../comparison/index.js';
5
6
  /**
6
7
  * Run listing item
7
8
  */
@@ -21,7 +22,10 @@ export interface RunListItem {
21
22
  export interface ComparisonResult {
22
23
  baseline: RunManifest;
23
24
  current: RunManifest;
24
- delta: {
25
+ /** Compatibility decision made before any metric delta is calculated. */
26
+ eligibility: ComparisonEligibility;
27
+ /** Absent when workloads or rubrics are incomparable. */
28
+ delta?: {
25
29
  successRate: number;
26
30
  latency: number;
27
31
  tokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { ToolCall } from '../adapters/types';
2
- import type { FixtureExecutorOptions, ToolExecutionContext, ToolExecutionResult } from './types';
1
+ import type { ToolCall } from '../adapters/types.js';
2
+ import type { FixtureExecutorOptions, ToolExecutionContext, ToolExecutionResult } from './types.js';
3
3
  export declare class FixtureToolExecutor {
4
4
  private readonly tools;
5
5
  private readonly fixtures;
@@ -1,4 +1,4 @@
1
- export * from './fixture-executor';
2
- export * from './schema-validator';
3
- export * from './types';
1
+ export * from './fixture-executor.js';
2
+ export * from './schema-validator.js';
3
+ export * from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { ToolCall, ToolDefinition } from '../adapters/types';
1
+ import type { ToolCall, ToolDefinition } from '../adapters/types.js';
2
2
  export type ToolLoopTerminationReason = 'completed' | 'max_steps' | 'timeout' | 'duplicate_call' | 'invalid_arguments' | 'unknown_tool' | 'tool_error';
3
3
  export interface ToolLoopPolicy {
4
4
  enabled: boolean;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Utilities module exports
3
3
  */
4
- export * from './errors';
5
- export * from './logger';
4
+ export * from './errors.js';
5
+ export * from './logger.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Validator module exports
3
3
  */
4
- export * from './types';
5
- export { ScenarioValidator } from './validator';
4
+ export * from './types.js';
5
+ export { ScenarioValidator } from './validator.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -7,7 +7,7 @@
7
7
  * 3. Semantic errors (duplicate IDs, undefined variables)
8
8
  * 4. Warnings (deprecated patterns)
9
9
  */
10
- import type { ValidationResult, ValidatorOptions } from './types';
10
+ import type { ValidationResult, ValidatorOptions } from './types.js';
11
11
  /**
12
12
  * Scenario validator class
13
13
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artemiskit/core",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "Core runner, evaluators, and storage for ArtemisKit LLM evaluation toolkit",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -30,12 +30,12 @@
30
30
  "types": "./dist/index.d.ts",
31
31
  "exports": {
32
32
  ".": {
33
- "import": "./dist/index.js",
34
- "types": "./dist/index.d.ts"
33
+ "types": "./dist/index.d.ts",
34
+ "import": "./dist/index.js"
35
35
  }
36
36
  },
37
37
  "scripts": {
38
- "build": "tsc --emitDeclarationOnly && bun build ./src/index.ts --outdir ./dist --target bun",
38
+ "build": "tsc --emitDeclarationOnly && bun build ./src/index.ts --outdir ./dist --target node --external '@artemiskit/*' && node ../../scripts/finalize-declarations.mjs ./dist",
39
39
  "typecheck": "tsc --noEmit",
40
40
  "clean": "rm -rf dist",
41
41
  "test": "bun test"
@@ -0,0 +1,219 @@
1
+ /** Versioned built-in capabilities. All implementations in this release are simulated. */
2
+ export const WORKFLOW_TOOL_IDS = [
3
+ 'search',
4
+ 'read_document',
5
+ 'query_records',
6
+ 'read_file',
7
+ 'write_file',
8
+ 'calculator',
9
+ 'get_workflow_state',
10
+ 'request_approval',
11
+ 'record_decision',
12
+ 'draft_message',
13
+ 'delegate_task',
14
+ 'get_task_status',
15
+ ] as const;
16
+
17
+ export type WorkflowToolId = (typeof WORKFLOW_TOOL_IDS)[number];
18
+ export type WorkflowResource =
19
+ | 'documents'
20
+ | 'records'
21
+ | 'files'
22
+ | 'computation'
23
+ | 'workflow_state'
24
+ | 'communication'
25
+ | 'coordination';
26
+
27
+ export interface WorkflowToolDescriptor {
28
+ id: WorkflowToolId;
29
+ version: '1';
30
+ family: string;
31
+ description: string;
32
+ inputSchema: Record<string, unknown>;
33
+ outputSchema: Record<string, unknown>;
34
+ authority: {
35
+ resource: WorkflowResource;
36
+ access: 'read' | 'write' | 'none';
37
+ network: 'denied';
38
+ sideEffects: 'none' | 'simulated';
39
+ };
40
+ evidence: { mode: 'metadata_only'; maxBytes: 1024 };
41
+ failureModes: string[];
42
+ }
43
+
44
+ const text = { type: 'string', minLength: 1, maxLength: 16_384 };
45
+ const identifier = {
46
+ type: 'string',
47
+ pattern: '^(?!(?:__proto__|prototype|constructor)$)[a-zA-Z0-9_-]{1,128}$',
48
+ };
49
+ const relativePath = {
50
+ type: 'string',
51
+ maxLength: 512,
52
+ pattern:
53
+ '^(?!.*(?:^|/)(?:\\.\\.?|__proto__|prototype|constructor)(?:/|$))[a-zA-Z0-9_-][a-zA-Z0-9_./-]*$',
54
+ };
55
+
56
+ function object(properties: Record<string, unknown>, required = Object.keys(properties)) {
57
+ return { type: 'object', properties, required, additionalProperties: false };
58
+ }
59
+
60
+ function descriptor(
61
+ id: WorkflowToolId,
62
+ family: string,
63
+ description: string,
64
+ resource: WorkflowResource,
65
+ access: 'read' | 'write' | 'none',
66
+ inputSchema: Record<string, unknown>,
67
+ outputSchema: Record<string, unknown>
68
+ ): WorkflowToolDescriptor {
69
+ return {
70
+ id,
71
+ version: '1',
72
+ family,
73
+ description,
74
+ inputSchema,
75
+ outputSchema,
76
+ authority: {
77
+ resource,
78
+ access,
79
+ network: 'denied',
80
+ sideEffects: access === 'write' ? 'simulated' : 'none',
81
+ },
82
+ evidence: { mode: 'metadata_only', maxBytes: 1024 },
83
+ failureModes: [
84
+ 'undeclared_tool',
85
+ 'permission_denied',
86
+ 'invalid_policy',
87
+ 'invalid_input',
88
+ 'invalid_state',
89
+ 'not_found',
90
+ 'output_limit',
91
+ 'tool_error',
92
+ ],
93
+ };
94
+ }
95
+
96
+ const tools: WorkflowToolDescriptor[] = [
97
+ descriptor(
98
+ 'search',
99
+ 'retrieval',
100
+ 'Search declared documents by case-insensitive literal text.',
101
+ 'documents',
102
+ 'read',
103
+ object({ query: text }),
104
+ object({ matches: { type: 'array', maxItems: 100, items: object({ id: identifier }) } })
105
+ ),
106
+ descriptor(
107
+ 'read_document',
108
+ 'documents',
109
+ 'Read one document from simulated state.',
110
+ 'documents',
111
+ 'read',
112
+ object({ id: identifier }),
113
+ object({ id: identifier, content: { type: 'string', maxLength: 16_384 } })
114
+ ),
115
+ descriptor(
116
+ 'query_records',
117
+ 'records',
118
+ 'Read a bounded declared collection of structured records.',
119
+ 'records',
120
+ 'read',
121
+ object({ collection: identifier }),
122
+ object({ records: { type: 'array', maxItems: 100, items: { type: 'object' } } })
123
+ ),
124
+ descriptor(
125
+ 'read_file',
126
+ 'files',
127
+ 'Read one relative file from in-memory fixture state.',
128
+ 'files',
129
+ 'read',
130
+ object({ path: relativePath }),
131
+ object({ content: { type: 'string', maxLength: 16_384 } })
132
+ ),
133
+ descriptor(
134
+ 'write_file',
135
+ 'files',
136
+ 'Write one relative file in isolated in-memory state.',
137
+ 'files',
138
+ 'write',
139
+ object({ path: relativePath, content: { type: 'string', maxLength: 16_384 } }),
140
+ object({ path: relativePath, written: { const: true } })
141
+ ),
142
+ descriptor(
143
+ 'calculator',
144
+ 'computation',
145
+ 'Perform one finite arithmetic operation without evaluating code.',
146
+ 'computation',
147
+ 'none',
148
+ object({
149
+ operation: { enum: ['add', 'subtract', 'multiply', 'divide'] },
150
+ a: { type: 'number' },
151
+ b: { type: 'number' },
152
+ }),
153
+ object({ value: { type: 'number' } })
154
+ ),
155
+ descriptor(
156
+ 'get_workflow_state',
157
+ 'workflow',
158
+ 'Read declared workflow state.',
159
+ 'workflow_state',
160
+ 'read',
161
+ object({}),
162
+ object({ state: { type: 'object' } })
163
+ ),
164
+ descriptor(
165
+ 'request_approval',
166
+ 'approvals',
167
+ 'Record a pending simulated request; never grant approval.',
168
+ 'workflow_state',
169
+ 'write',
170
+ object({ reason: text }),
171
+ object({ requested: { const: true }, status: { const: 'pending' } })
172
+ ),
173
+ descriptor(
174
+ 'record_decision',
175
+ 'workflow',
176
+ 'Record a proposed decision without granting authority.',
177
+ 'workflow_state',
178
+ 'write',
179
+ object({ decision: text }),
180
+ object({ recorded: { const: true } })
181
+ ),
182
+ descriptor(
183
+ 'draft_message',
184
+ 'communication',
185
+ 'Create a local message draft; never send it.',
186
+ 'communication',
187
+ 'write',
188
+ object({ recipient: text, body: text }),
189
+ object({ id: identifier, status: { const: 'draft' } })
190
+ ),
191
+ descriptor(
192
+ 'delegate_task',
193
+ 'coordination',
194
+ 'Record a pending local task; never invoke a worker or external system.',
195
+ 'coordination',
196
+ 'write',
197
+ object({ task: text }),
198
+ object({ id: identifier, status: { const: 'pending' } })
199
+ ),
200
+ descriptor(
201
+ 'get_task_status',
202
+ 'coordination',
203
+ 'Read the status of a declared simulated task.',
204
+ 'coordination',
205
+ 'read',
206
+ object({ id: identifier }),
207
+ object({ id: identifier, status: { enum: ['pending', 'completed', 'failed'] } })
208
+ ),
209
+ ];
210
+
211
+ /** Defensive copies prevent callers or adapters from modifying the catalog's authority. */
212
+ export function listWorkflowTools(): WorkflowToolDescriptor[] {
213
+ return structuredClone(tools);
214
+ }
215
+
216
+ export function getWorkflowTool(id: string): WorkflowToolDescriptor | undefined {
217
+ const tool = tools.find((candidate) => candidate.id === id);
218
+ return tool ? structuredClone(tool) : undefined;
219
+ }
@@ -0,0 +1,6 @@
1
+ /** Versioned agent workflow authoring and single-step primitives. */
2
+ export * from './schema';
3
+ export * from './parser';
4
+ export * from './catalog';
5
+ export * from './simulated-tools';
6
+ export * from './target';
@@ -0,0 +1,43 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { parseDocument } from 'yaml';
3
+ import { ArtemisError } from '../utils/errors';
4
+ import { type AgentWorkflow, AgentWorkflowSchema } from './schema';
5
+
6
+ export function validateAgentWorkflow(value: unknown): AgentWorkflow {
7
+ const result = AgentWorkflowSchema.safeParse(value);
8
+ if (!result.success) {
9
+ // Never include input values or untrusted YAML content in diagnostic messages.
10
+ throw new ArtemisError(
11
+ 'Invalid agent workflow: check version, fields, tools, policy, and outcomes',
12
+ 'SCENARIO_VALIDATION_ERROR',
13
+ { issues: result.error.issues.map((issue) => ({ path: issue.path, code: issue.code })) }
14
+ );
15
+ }
16
+ return result.data;
17
+ }
18
+
19
+ /** Parse without environment substitution or fixture dereferencing. */
20
+ export function parseAgentWorkflow(yamlText: string): AgentWorkflow {
21
+ if (Buffer.byteLength(yamlText) > 1_048_576)
22
+ throw new ArtemisError('Agent workflow exceeds 1 MiB', 'SCENARIO_PARSE_ERROR');
23
+ let value: unknown;
24
+ try {
25
+ const document = parseDocument(yamlText, { uniqueKeys: true, customTags: [] });
26
+ if (document.errors.length || document.warnings.length) throw new Error('Invalid YAML');
27
+ value = document.toJS({ maxAliasCount: 0 });
28
+ } catch {
29
+ throw new ArtemisError('Failed to parse agent workflow YAML', 'SCENARIO_PARSE_ERROR');
30
+ }
31
+ return validateAgentWorkflow(value);
32
+ }
33
+
34
+ /** Reads only the explicitly supplied scenario; fixture resolution belongs to a future runner. */
35
+ export async function loadAgentWorkflow(filePath: string): Promise<AgentWorkflow> {
36
+ let content: string;
37
+ try {
38
+ content = await readFile(filePath, 'utf8');
39
+ } catch {
40
+ throw new ArtemisError('Failed to read agent workflow file', 'SCENARIO_READ_ERROR');
41
+ }
42
+ return parseAgentWorkflow(content);
43
+ }