@agentxm/extension-model 0.28.4 → 0.28.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/unstable/release-channel.d.ts +156 -0
- package/dist/src/unstable/release-channel.js +92 -0
- package/dist/src/unstable/specifications/conformance.d.ts +62 -0
- package/dist/src/unstable/specifications/conformance.js +137 -0
- package/dist/src/unstable/specifications/contract.d.ts +215 -0
- package/dist/src/unstable/specifications/contract.js +114 -0
- package/dist/src/unstable/specifications/decode.d.ts +57 -0
- package/dist/src/unstable/specifications/decode.js +91 -0
- package/dist/src/unstable/specifications/index.d.ts +10 -0
- package/dist/src/unstable/specifications/index.js +10 -0
- package/dist/src/unstable/specifications/shared-goals.d.ts +36 -0
- package/dist/src/unstable/specifications/shared-goals.js +36 -0
- package/package.json +67 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared executable-specification contract.
|
|
3
|
+
*
|
|
4
|
+
* One metadata contract, one classification lens, one set of controlled
|
|
5
|
+
* vocabularies, and one shared product-goal registry for every AgentXM
|
|
6
|
+
* specification corpus. Each repository keeps its own specification files,
|
|
7
|
+
* local product goals, and local placement rules; only this contract and the
|
|
8
|
+
* shared goal identities cross the repository boundary.
|
|
9
|
+
*
|
|
10
|
+
* Metadata is data. Every specification file exports one `specification`
|
|
11
|
+
* constant built with `defineSpecification`: a literal object carrying only
|
|
12
|
+
* the cross-method information that discovery, conformance, and reporting
|
|
13
|
+
* need. It never wraps or replaces native test-framework constructs, and
|
|
14
|
+
* catalog tooling reads it statically without executing the specification.
|
|
15
|
+
*
|
|
16
|
+
* @experimental This API is unstable and may change without notice.
|
|
17
|
+
*/
|
|
18
|
+
export const SPECIFICATION_CLASSES = [
|
|
19
|
+
"functional",
|
|
20
|
+
"quality",
|
|
21
|
+
"constraint",
|
|
22
|
+
"external-conformance",
|
|
23
|
+
"human-factors",
|
|
24
|
+
"process",
|
|
25
|
+
];
|
|
26
|
+
export const SPECIFICATION_ROLES = [
|
|
27
|
+
"experience",
|
|
28
|
+
"interface",
|
|
29
|
+
"supporting",
|
|
30
|
+
];
|
|
31
|
+
export const EXECUTION_BOUNDARIES = [
|
|
32
|
+
"memory",
|
|
33
|
+
"process",
|
|
34
|
+
"binary",
|
|
35
|
+
"packed-artifact",
|
|
36
|
+
"installed",
|
|
37
|
+
"platform",
|
|
38
|
+
"published-artifact",
|
|
39
|
+
"deployed",
|
|
40
|
+
"repository",
|
|
41
|
+
];
|
|
42
|
+
export const EXECUTION_SELECTIONS = [
|
|
43
|
+
"per-change",
|
|
44
|
+
"platform-matrix",
|
|
45
|
+
"scheduled",
|
|
46
|
+
"release-candidate",
|
|
47
|
+
"post-deployment",
|
|
48
|
+
];
|
|
49
|
+
/**
|
|
50
|
+
* Known testing methods. The vocabulary is extensible: a method not listed
|
|
51
|
+
* here is accepted when it is a lowercase kebab identifier, so a new or
|
|
52
|
+
* combined method never needs a contract change before use.
|
|
53
|
+
*/
|
|
54
|
+
export const KNOWN_SPECIFICATION_METHODS = [
|
|
55
|
+
"example",
|
|
56
|
+
"decision-table",
|
|
57
|
+
"property",
|
|
58
|
+
"model",
|
|
59
|
+
"contract",
|
|
60
|
+
"conformance-matrix",
|
|
61
|
+
"golden-output",
|
|
62
|
+
"measurement",
|
|
63
|
+
"static",
|
|
64
|
+
"smoke",
|
|
65
|
+
"manual",
|
|
66
|
+
"review",
|
|
67
|
+
];
|
|
68
|
+
/**
|
|
69
|
+
* Methods whose evidence is produced by a person rather than a runner. A
|
|
70
|
+
* specification whose methods are all unverifiable is reported as unverified
|
|
71
|
+
* by the harness; it is never reported as passing.
|
|
72
|
+
*/
|
|
73
|
+
export const UNVERIFIABLE_SPECIFICATION_METHODS = [
|
|
74
|
+
"manual",
|
|
75
|
+
"review",
|
|
76
|
+
];
|
|
77
|
+
/**
|
|
78
|
+
* Known quality characteristics. Required for `quality`-class specifications
|
|
79
|
+
* and permitted elsewhere; extensible under the same identifier rule as
|
|
80
|
+
* methods.
|
|
81
|
+
*/
|
|
82
|
+
export const KNOWN_QUALITY_CHARACTERISTICS = [
|
|
83
|
+
"installability",
|
|
84
|
+
"compatibility",
|
|
85
|
+
"performance",
|
|
86
|
+
"security",
|
|
87
|
+
"privacy",
|
|
88
|
+
"reliability",
|
|
89
|
+
"availability",
|
|
90
|
+
"maintainability",
|
|
91
|
+
"observability",
|
|
92
|
+
"accessibility",
|
|
93
|
+
"usability",
|
|
94
|
+
];
|
|
95
|
+
/** Segments of a requirement identity or product-goal identity. */
|
|
96
|
+
export const IDENTITY_SEGMENT_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
97
|
+
/**
|
|
98
|
+
* Declares one specification's metadata. Identity function: it exists to type
|
|
99
|
+
* the literal and to give discovery a stable syntactic anchor.
|
|
100
|
+
*/
|
|
101
|
+
export const defineSpecification = (metadata) => metadata;
|
|
102
|
+
/**
|
|
103
|
+
* Declares a product-goal registry. Identity function with the same
|
|
104
|
+
* literal-only discipline as `defineSpecification`.
|
|
105
|
+
*/
|
|
106
|
+
export const defineProductGoals = (registry) => registry;
|
|
107
|
+
/** Declares a boundary-specific execution binding. Identity function. */
|
|
108
|
+
export const defineExecutionBinding = (binding) => binding;
|
|
109
|
+
/**
|
|
110
|
+
* Declares the static gates bound to a specification as evidence. Exported
|
|
111
|
+
* as `boundEvidence` beside the `specification` constant. Identity function.
|
|
112
|
+
*/
|
|
113
|
+
export const defineBoundEvidence = (evidence) => evidence;
|
|
114
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decoders for the shared specification contract.
|
|
3
|
+
*
|
|
4
|
+
* Catalog tooling extracts each literal statically; result adapters read the
|
|
5
|
+
* exported constant at run time. Both decode the unknown value through these
|
|
6
|
+
* schemas so every corpus applies one vocabulary with one set of messages.
|
|
7
|
+
*
|
|
8
|
+
* @experimental This API is unstable and may change without notice.
|
|
9
|
+
*/
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
11
|
+
import { type ExecutionBinding, type ProductGoalRegistry, type BoundEvidenceGate, type SpecificationMetadata } from "./contract.js";
|
|
12
|
+
export declare const SpecificationMetadataSchema: Schema.Struct<{
|
|
13
|
+
readonly requirement: Schema.String;
|
|
14
|
+
readonly title: Schema.NonEmptyString;
|
|
15
|
+
readonly statement: Schema.NonEmptyString;
|
|
16
|
+
readonly class: Schema.Literals<import("./contract.js").SpecificationClass[]>;
|
|
17
|
+
readonly characteristic: Schema.optionalKey<Schema.String>;
|
|
18
|
+
readonly role: Schema.Literals<import("./contract.js").SpecificationRole[]>;
|
|
19
|
+
readonly goals: Schema.NonEmptyArray<Schema.String>;
|
|
20
|
+
readonly boundary: Schema.optionalKey<Schema.Literals<import("./contract.js").ExecutionBoundary[]>>;
|
|
21
|
+
readonly boundaryRationale: Schema.optionalKey<Schema.NonEmptyString>;
|
|
22
|
+
readonly methods: Schema.NonEmptyArray<Schema.String>;
|
|
23
|
+
readonly selection: Schema.optionalKey<Schema.Literals<import("./contract.js").ExecutionSelection[]>>;
|
|
24
|
+
readonly derivedFrom: Schema.$Array<Schema.NonEmptyString>;
|
|
25
|
+
readonly supersedes: Schema.$Array<Schema.NonEmptyString>;
|
|
26
|
+
readonly assumptions: Schema.Union<readonly [Schema.$Array<Schema.NonEmptyString>, Schema.Literal<"unknown">]>;
|
|
27
|
+
readonly openQuestions: Schema.Union<readonly [Schema.$Array<Schema.NonEmptyString>, Schema.Literal<"unknown">]>;
|
|
28
|
+
readonly limitations: Schema.optionalKey<Schema.NonEmptyArray<Schema.Struct<{
|
|
29
|
+
readonly limitation: Schema.NonEmptyString;
|
|
30
|
+
readonly retirementCondition: Schema.NonEmptyString;
|
|
31
|
+
}>>>;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const ProductGoalRegistrySchema: Schema.$Record<Schema.String, Schema.Struct<{
|
|
34
|
+
readonly outcome: Schema.NonEmptyString;
|
|
35
|
+
readonly status: Schema.optionalKey<Schema.Literals<readonly ["active", "retired"]>>;
|
|
36
|
+
}>>;
|
|
37
|
+
export declare const ExecutionBindingSchema: Schema.Struct<{
|
|
38
|
+
readonly requirements: Schema.NonEmptyArray<Schema.String>;
|
|
39
|
+
readonly boundary: Schema.Literals<import("./contract.js").ExecutionBoundary[]>;
|
|
40
|
+
readonly rationale: Schema.NonEmptyString;
|
|
41
|
+
}>;
|
|
42
|
+
export declare const BoundEvidenceSchema: Schema.NonEmptyArray<Schema.Struct<{
|
|
43
|
+
readonly gate: Schema.NonEmptyString;
|
|
44
|
+
readonly verifies: Schema.NonEmptyString;
|
|
45
|
+
}>>;
|
|
46
|
+
export type DecodeResult<T> = {
|
|
47
|
+
readonly ok: true;
|
|
48
|
+
readonly value: T;
|
|
49
|
+
} | {
|
|
50
|
+
readonly ok: false;
|
|
51
|
+
readonly issues: readonly string[];
|
|
52
|
+
};
|
|
53
|
+
export declare const decodeSpecificationMetadata: (value: unknown) => DecodeResult<SpecificationMetadata>;
|
|
54
|
+
export declare const decodeProductGoalRegistry: (value: unknown) => DecodeResult<ProductGoalRegistry>;
|
|
55
|
+
export declare const decodeExecutionBinding: (value: unknown) => DecodeResult<ExecutionBinding>;
|
|
56
|
+
export declare const decodeBoundEvidence: (value: unknown) => DecodeResult<readonly [BoundEvidenceGate, ...BoundEvidenceGate[]]>;
|
|
57
|
+
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decoders for the shared specification contract.
|
|
3
|
+
*
|
|
4
|
+
* Catalog tooling extracts each literal statically; result adapters read the
|
|
5
|
+
* exported constant at run time. Both decode the unknown value through these
|
|
6
|
+
* schemas so every corpus applies one vocabulary with one set of messages.
|
|
7
|
+
*
|
|
8
|
+
* @experimental This API is unstable and may change without notice.
|
|
9
|
+
*/
|
|
10
|
+
import * as Result from "effect/Result";
|
|
11
|
+
import * as Schema from "effect/Schema";
|
|
12
|
+
import { formatSchemaIssuesToLines } from "../schema-issues.js";
|
|
13
|
+
import { EXECUTION_BOUNDARIES, EXECUTION_SELECTIONS, IDENTITY_SEGMENT_PATTERN, SPECIFICATION_CLASSES, SPECIFICATION_ROLES, } from "./contract.js";
|
|
14
|
+
const REQUIREMENT_IDENTITY_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*(\/[a-z0-9]+(-[a-z0-9]+)*)+$/;
|
|
15
|
+
const RequirementIdentitySchema = Schema.String.pipe(Schema.check(Schema.isPattern(REQUIREMENT_IDENTITY_PATTERN, {
|
|
16
|
+
title: "Requirement identity",
|
|
17
|
+
message: "Expected two or more lowercase kebab segments joined by '/'",
|
|
18
|
+
})));
|
|
19
|
+
const IdentifierSchema = Schema.String.pipe(Schema.check(Schema.isPattern(IDENTITY_SEGMENT_PATTERN, {
|
|
20
|
+
title: "Identifier",
|
|
21
|
+
message: "Expected a lowercase kebab identifier",
|
|
22
|
+
})));
|
|
23
|
+
const SpecificationLimitationSchema = Schema.Struct({
|
|
24
|
+
limitation: Schema.NonEmptyString,
|
|
25
|
+
retirementCondition: Schema.NonEmptyString,
|
|
26
|
+
});
|
|
27
|
+
const StatedOrUnknownSchema = Schema.Union([
|
|
28
|
+
Schema.Array(Schema.NonEmptyString),
|
|
29
|
+
Schema.Literal("unknown"),
|
|
30
|
+
]);
|
|
31
|
+
const specificationClasses = SPECIFICATION_CLASSES.map((entry) => entry);
|
|
32
|
+
const specificationRoles = SPECIFICATION_ROLES.map((entry) => entry);
|
|
33
|
+
const executionBoundaries = EXECUTION_BOUNDARIES.map((entry) => entry);
|
|
34
|
+
const executionSelections = EXECUTION_SELECTIONS.map((entry) => entry);
|
|
35
|
+
export const SpecificationMetadataSchema = Schema.Struct({
|
|
36
|
+
requirement: RequirementIdentitySchema,
|
|
37
|
+
title: Schema.NonEmptyString,
|
|
38
|
+
statement: Schema.NonEmptyString,
|
|
39
|
+
class: Schema.Literals(specificationClasses),
|
|
40
|
+
characteristic: Schema.optionalKey(IdentifierSchema),
|
|
41
|
+
role: Schema.Literals(specificationRoles),
|
|
42
|
+
goals: Schema.NonEmptyArray(IdentifierSchema),
|
|
43
|
+
boundary: Schema.optionalKey(Schema.Literals(executionBoundaries)),
|
|
44
|
+
boundaryRationale: Schema.optionalKey(Schema.NonEmptyString),
|
|
45
|
+
methods: Schema.NonEmptyArray(IdentifierSchema),
|
|
46
|
+
selection: Schema.optionalKey(Schema.Literals(executionSelections)),
|
|
47
|
+
derivedFrom: Schema.Array(Schema.NonEmptyString),
|
|
48
|
+
supersedes: Schema.Array(Schema.NonEmptyString),
|
|
49
|
+
assumptions: StatedOrUnknownSchema,
|
|
50
|
+
openQuestions: StatedOrUnknownSchema,
|
|
51
|
+
limitations: Schema.optionalKey(Schema.NonEmptyArray(SpecificationLimitationSchema)),
|
|
52
|
+
}).pipe(Schema.check(Schema.makeFilter((metadata) => metadata.class === "quality" && metadata.characteristic === undefined
|
|
53
|
+
? "A quality specification must name the characteristic it measures"
|
|
54
|
+
: undefined), Schema.makeFilter((metadata) => (metadata.boundary ?? "memory") !== "memory" && metadata.boundaryRationale === undefined
|
|
55
|
+
? "A specification observed outside memory must state the evidence that boundary supplies"
|
|
56
|
+
: undefined), Schema.makeFilter((metadata) => metadata.supersedes.some((entry) => metadata.supersedes.indexOf(entry) !== metadata.supersedes.lastIndexOf(entry))
|
|
57
|
+
? "supersedes must not repeat an identity"
|
|
58
|
+
: undefined)));
|
|
59
|
+
const ProductGoalDefinitionSchema = Schema.Struct({
|
|
60
|
+
outcome: Schema.NonEmptyString,
|
|
61
|
+
status: Schema.optionalKey(Schema.Literals(["active", "retired"])),
|
|
62
|
+
});
|
|
63
|
+
export const ProductGoalRegistrySchema = Schema.Record(IdentifierSchema, ProductGoalDefinitionSchema);
|
|
64
|
+
export const ExecutionBindingSchema = Schema.Struct({
|
|
65
|
+
requirements: Schema.NonEmptyArray(RequirementIdentitySchema),
|
|
66
|
+
boundary: Schema.Literals(executionBoundaries),
|
|
67
|
+
rationale: Schema.NonEmptyString,
|
|
68
|
+
});
|
|
69
|
+
const BoundEvidenceGateSchema = Schema.Struct({
|
|
70
|
+
gate: Schema.NonEmptyString,
|
|
71
|
+
verifies: Schema.NonEmptyString,
|
|
72
|
+
});
|
|
73
|
+
export const BoundEvidenceSchema = Schema.NonEmptyArray(BoundEvidenceGateSchema);
|
|
74
|
+
const toDecodeResult = (result) => Result.isSuccess(result)
|
|
75
|
+
? { ok: true, value: result.success }
|
|
76
|
+
: { ok: false, issues: formatSchemaIssuesToLines(result.failure.issue) };
|
|
77
|
+
/**
|
|
78
|
+
* Metadata is a closed literal: a field the contract does not define is a
|
|
79
|
+
* decoding failure, never ignored.
|
|
80
|
+
*/
|
|
81
|
+
const decodeMetadata = Schema.decodeUnknownResult(SpecificationMetadataSchema, {
|
|
82
|
+
onExcessProperty: "error",
|
|
83
|
+
});
|
|
84
|
+
const decodeRegistry = Schema.decodeUnknownResult(ProductGoalRegistrySchema);
|
|
85
|
+
const decodeBinding = Schema.decodeUnknownResult(ExecutionBindingSchema);
|
|
86
|
+
const decodeEvidence = Schema.decodeUnknownResult(BoundEvidenceSchema);
|
|
87
|
+
export const decodeSpecificationMetadata = (value) => toDecodeResult(decodeMetadata(value));
|
|
88
|
+
export const decodeProductGoalRegistry = (value) => toDecodeResult(decodeRegistry(value));
|
|
89
|
+
export const decodeExecutionBinding = (value) => toDecodeResult(decodeBinding(value));
|
|
90
|
+
export const decodeBoundEvidence = (value) => toDecodeResult(decodeEvidence(value));
|
|
91
|
+
//# sourceMappingURL=decode.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Area barrel for the shared executable-specification contract.
|
|
3
|
+
*
|
|
4
|
+
* @experimental This API is unstable and may change without notice.
|
|
5
|
+
*/
|
|
6
|
+
export { type BoundEvidenceGate, EXECUTION_BOUNDARIES, EXECUTION_SELECTIONS, type ExecutionBinding, type ExecutionBoundary, type ExecutionSelection, IDENTITY_SEGMENT_PATTERN, KNOWN_QUALITY_CHARACTERISTICS, KNOWN_SPECIFICATION_METHODS, type KnownQualityCharacteristic, type KnownSpecificationMethod, type ProductGoalDefinition, type ProductGoalRegistry, SPECIFICATION_CLASSES, SPECIFICATION_ROLES, type SpecificationClass, type SpecificationLimitation, type SpecificationMetadata, type SpecificationRole, UNVERIFIABLE_SPECIFICATION_METHODS, defineBoundEvidence, defineExecutionBinding, defineProductGoals, defineSpecification, } from "./contract.js";
|
|
7
|
+
export { BoundEvidenceSchema, ExecutionBindingSchema, ProductGoalRegistrySchema, SpecificationMetadataSchema, decodeBoundEvidence, decodeExecutionBinding, decodeProductGoalRegistry, decodeSpecificationMetadata, type DecodeResult, } from "./decode.js";
|
|
8
|
+
export { type ConformanceIssue, type CorpusExecutionBinding, type CorpusInput, type CorpusSpecification, checkSpecificationCorpus, isExecutableMethodSet, lintProductLanguage, } from "./conformance.js";
|
|
9
|
+
export { type SharedProductGoalId, sharedProductGoals } from "./shared-goals.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Area barrel for the shared executable-specification contract.
|
|
3
|
+
*
|
|
4
|
+
* @experimental This API is unstable and may change without notice.
|
|
5
|
+
*/
|
|
6
|
+
export { EXECUTION_BOUNDARIES, EXECUTION_SELECTIONS, IDENTITY_SEGMENT_PATTERN, KNOWN_QUALITY_CHARACTERISTICS, KNOWN_SPECIFICATION_METHODS, SPECIFICATION_CLASSES, SPECIFICATION_ROLES, UNVERIFIABLE_SPECIFICATION_METHODS, defineBoundEvidence, defineExecutionBinding, defineProductGoals, defineSpecification, } from "./contract.js";
|
|
7
|
+
export { BoundEvidenceSchema, ExecutionBindingSchema, ProductGoalRegistrySchema, SpecificationMetadataSchema, decodeBoundEvidence, decodeExecutionBinding, decodeProductGoalRegistry, decodeSpecificationMetadata, } from "./decode.js";
|
|
8
|
+
export { checkSpecificationCorpus, isExecutableMethodSet, lintProductLanguage, } from "./conformance.js";
|
|
9
|
+
export { sharedProductGoals } from "./shared-goals.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared product goals: outcomes that more than one AgentXM repository
|
|
3
|
+
* serves. Each is registered once, here, with a stable identity; every
|
|
4
|
+
* repository's specification corpus references these identities and keeps
|
|
5
|
+
* repository-specific goals in its own local registry. A local registry must
|
|
6
|
+
* not redefine a shared identity.
|
|
7
|
+
*
|
|
8
|
+
* The registry does not restate, own, or rank the specifications that
|
|
9
|
+
* support a goal. Requirements review walks goals: a retired goal makes its
|
|
10
|
+
* referencing specifications retirement candidates, and an active goal with
|
|
11
|
+
* no referencing specification identifies missing coverage or a dead goal.
|
|
12
|
+
*
|
|
13
|
+
* @experimental This API is unstable and may change without notice.
|
|
14
|
+
*/
|
|
15
|
+
export declare const sharedProductGoals: {
|
|
16
|
+
readonly "extension-adoption": {
|
|
17
|
+
readonly outcome: "People and agents can find, install, update, and remove reusable extensions across coding agents through dependable product surfaces.";
|
|
18
|
+
};
|
|
19
|
+
readonly "trustworthy-distribution": {
|
|
20
|
+
readonly outcome: "Publishing and acquiring extensions preserves integrity, provenance, and immutable accepted resolutions.";
|
|
21
|
+
};
|
|
22
|
+
readonly "machine-automation": {
|
|
23
|
+
readonly outcome: "Machine consumers can drive AgentXM surfaces non-interactively with complete, schema-backed results separated from diagnostics.";
|
|
24
|
+
};
|
|
25
|
+
readonly "knowledge-access": {
|
|
26
|
+
readonly outcome: "People and agents can discover concepts, commands, and contracts from the surface they are already using.";
|
|
27
|
+
};
|
|
28
|
+
readonly "privacy-and-consent": {
|
|
29
|
+
readonly outcome: "Observation of product use stays within the documented data boundary and under the control of the person being observed.";
|
|
30
|
+
};
|
|
31
|
+
readonly "dependable-change-process": {
|
|
32
|
+
readonly outcome: "Changes and releases land through the governed repository process with required evidence and human approval.";
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export type SharedProductGoalId = keyof typeof sharedProductGoals;
|
|
36
|
+
//# sourceMappingURL=shared-goals.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared product goals: outcomes that more than one AgentXM repository
|
|
3
|
+
* serves. Each is registered once, here, with a stable identity; every
|
|
4
|
+
* repository's specification corpus references these identities and keeps
|
|
5
|
+
* repository-specific goals in its own local registry. A local registry must
|
|
6
|
+
* not redefine a shared identity.
|
|
7
|
+
*
|
|
8
|
+
* The registry does not restate, own, or rank the specifications that
|
|
9
|
+
* support a goal. Requirements review walks goals: a retired goal makes its
|
|
10
|
+
* referencing specifications retirement candidates, and an active goal with
|
|
11
|
+
* no referencing specification identifies missing coverage or a dead goal.
|
|
12
|
+
*
|
|
13
|
+
* @experimental This API is unstable and may change without notice.
|
|
14
|
+
*/
|
|
15
|
+
import { defineProductGoals } from "./contract.js";
|
|
16
|
+
export const sharedProductGoals = defineProductGoals({
|
|
17
|
+
"extension-adoption": {
|
|
18
|
+
outcome: "People and agents can find, install, update, and remove reusable extensions across coding agents through dependable product surfaces.",
|
|
19
|
+
},
|
|
20
|
+
"trustworthy-distribution": {
|
|
21
|
+
outcome: "Publishing and acquiring extensions preserves integrity, provenance, and immutable accepted resolutions.",
|
|
22
|
+
},
|
|
23
|
+
"machine-automation": {
|
|
24
|
+
outcome: "Machine consumers can drive AgentXM surfaces non-interactively with complete, schema-backed results separated from diagnostics.",
|
|
25
|
+
},
|
|
26
|
+
"knowledge-access": {
|
|
27
|
+
outcome: "People and agents can discover concepts, commands, and contracts from the surface they are already using.",
|
|
28
|
+
},
|
|
29
|
+
"privacy-and-consent": {
|
|
30
|
+
outcome: "Observation of product use stays within the documented data boundary and under the control of the person being observed.",
|
|
31
|
+
},
|
|
32
|
+
"dependable-change-process": {
|
|
33
|
+
outcome: "Changes and releases land through the governed repository process with required evidence and human approval.",
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=shared-goals.js.map
|