@withandeo/cli 0.19.9 → 0.19.10
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/README.md +18 -3
- package/dist/documentation.d.ts +12 -2
- package/dist/documentation.d.ts.map +1 -1
- package/dist/documentation.js +107 -11
- package/dist/documentation.js.map +1 -1
- package/dist/flagship-contract.js +3 -3
- package/dist/flagship-contract.js.map +1 -1
- package/dist/main.js +5 -5
- package/dist/main.js.map +1 -1
- package/dist/public-skill-contract.d.ts +21 -0
- package/dist/public-skill-contract.d.ts.map +1 -0
- package/dist/public-skill-contract.js +47 -0
- package/dist/public-skill-contract.js.map +1 -0
- package/package.json +1 -1
- package/skill/publication.json +3 -0
- package/skill/tender-accounts/SKILL.md +2 -1
- package/skill/tender-accounts/references/managed-source.md +14 -2
- package/skill/tender-accounts/references/skills.md +7 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const PUBLIC_SKILL_URL = "https://agents.withandeo.com/public/skills/andeo";
|
|
2
|
+
export declare const PUBLIC_SKILL_KEY = "public/andeo/v1/latest.json";
|
|
3
|
+
export declare const MAX_PUBLIC_SKILL_BYTES: number;
|
|
4
|
+
export interface PublicSkillFile {
|
|
5
|
+
path: string;
|
|
6
|
+
content: string;
|
|
7
|
+
sha256: string;
|
|
8
|
+
bytes: number;
|
|
9
|
+
}
|
|
10
|
+
export interface PublicSkillBundle {
|
|
11
|
+
schema: "andeo.public-skill/v1";
|
|
12
|
+
name: "andeo";
|
|
13
|
+
revision: string;
|
|
14
|
+
minimumCliVersion: string;
|
|
15
|
+
files: PublicSkillFile[];
|
|
16
|
+
}
|
|
17
|
+
export declare function publicSkillPath(path: string): boolean;
|
|
18
|
+
export declare function parsePublicSkillBundle(value: unknown): PublicSkillBundle;
|
|
19
|
+
export declare function publicSkillRevisionInput(bundle: Pick<PublicSkillBundle, "minimumCliVersion" | "files">): string;
|
|
20
|
+
export declare function verifyPublicSkillBundle(bundle: PublicSkillBundle, sha256: (bytes: Uint8Array<ArrayBuffer>) => Promise<string>): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=public-skill-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-skill-contract.d.ts","sourceRoot":"","sources":["../src/public-skill-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,qDAAqD,CAAC;AACnF,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAC9D,eAAO,MAAM,sBAAsB,QAAc,CAAC;AAElD,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACjG,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAkBxE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,MAAM,CAG/G;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,EACrE,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const PUBLIC_SKILL_URL = "https://agents.withandeo.com/public/skills/andeo";
|
|
2
|
+
export const PUBLIC_SKILL_KEY = "public/andeo/v1/latest.json";
|
|
3
|
+
export const MAX_PUBLIC_SKILL_BYTES = 1024 * 1024;
|
|
4
|
+
export function publicSkillPath(path) {
|
|
5
|
+
return path === "SKILL.md" || /^references\/[A-Za-z0-9][A-Za-z0-9._-]*\.md$/u.test(path);
|
|
6
|
+
}
|
|
7
|
+
export function parsePublicSkillBundle(value) {
|
|
8
|
+
const hash = /^[a-f0-9]{64}$/u;
|
|
9
|
+
if (!record(value) || value.schema !== "andeo.public-skill/v1" || value.name !== "andeo"
|
|
10
|
+
|| typeof value.revision !== "string" || !hash.test(value.revision)
|
|
11
|
+
|| typeof value.minimumCliVersion !== "string" || !/^\d{1,6}\.\d{1,6}\.\d{1,6}$/u.test(value.minimumCliVersion)
|
|
12
|
+
|| !Array.isArray(value.files) || value.files.length < 1 || value.files.length > 100)
|
|
13
|
+
throw invalid();
|
|
14
|
+
const paths = new Set();
|
|
15
|
+
const files = value.files.map(file => {
|
|
16
|
+
if (!record(file) || typeof file.path !== "string" || file.path.length > 240 || !publicSkillPath(file.path)
|
|
17
|
+
|| paths.has(file.path) || typeof file.content !== "string" || file.content.length > MAX_PUBLIC_SKILL_BYTES
|
|
18
|
+
|| typeof file.sha256 !== "string" || !hash.test(file.sha256) || !Number.isSafeInteger(file.bytes)
|
|
19
|
+
|| file.bytes < 1 || file.bytes > 512 * 1024)
|
|
20
|
+
throw invalid();
|
|
21
|
+
paths.add(file.path);
|
|
22
|
+
return { path: file.path, content: file.content, sha256: file.sha256, bytes: file.bytes };
|
|
23
|
+
});
|
|
24
|
+
if (!paths.has("SKILL.md"))
|
|
25
|
+
throw invalid();
|
|
26
|
+
return { schema: "andeo.public-skill/v1", name: "andeo", revision: value.revision,
|
|
27
|
+
minimumCliVersion: value.minimumCliVersion, files };
|
|
28
|
+
}
|
|
29
|
+
export function publicSkillRevisionInput(bundle) {
|
|
30
|
+
return JSON.stringify({ minimumCliVersion: bundle.minimumCliVersion,
|
|
31
|
+
files: bundle.files.map(({ path, sha256, bytes }) => ({ path, sha256, bytes })) });
|
|
32
|
+
}
|
|
33
|
+
export async function verifyPublicSkillBundle(bundle, sha256) {
|
|
34
|
+
const encoder = new TextEncoder();
|
|
35
|
+
for (const file of bundle.files) {
|
|
36
|
+
const bytes = encoder.encode(file.content);
|
|
37
|
+
if (bytes.byteLength !== file.bytes || await sha256(bytes) !== file.sha256)
|
|
38
|
+
throw invalid();
|
|
39
|
+
}
|
|
40
|
+
if (await sha256(encoder.encode(publicSkillRevisionInput(bundle))) !== bundle.revision)
|
|
41
|
+
throw invalid();
|
|
42
|
+
}
|
|
43
|
+
function record(value) {
|
|
44
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
45
|
+
}
|
|
46
|
+
function invalid() { return new Error("The public Andeo skill bundle is invalid."); }
|
|
47
|
+
//# sourceMappingURL=public-skill-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-skill-contract.js","sourceRoot":"","sources":["../src/public-skill-contract.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -75,7 +75,8 @@ The source defaults to HEAD; the destination remains independent. Confirm the
|
|
|
75
75
|
returned `sourceRevision` and `sourceDiffersFromHead`. Dirty files are excluded,
|
|
76
76
|
and reviewed repositories still protect their default branch.
|
|
77
77
|
|
|
78
|
-
For a
|
|
78
|
+
For a managed repository with source protection or an explicit native-preview
|
|
79
|
+
agent merge grant, verify the exact branch preview, read the managed-source reference and use
|
|
79
80
|
`andeo source merge --head BRANCH --title TITLE --expected-head PUSHED_SHA --idempotency-key KEY --wait --json`
|
|
80
81
|
to request hosted landing and follow the saved publication policy. Inspect required
|
|
81
82
|
human review, deployment and cleanup outcomes separately; do not push main to bypass them.
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
## Request merge and deployment
|
|
4
4
|
|
|
5
|
-
On a
|
|
6
|
-
|
|
5
|
+
On a managed repository, push the committed feature branch and verify its exact
|
|
6
|
+
native preview, then request one hosted merge. Read `capabilities`,
|
|
7
|
+
`source merge-policy show` and `source policy show` first. Exercise the changed
|
|
8
|
+
behavior on the preview; a successful build alone is not behavioral verification.
|
|
7
9
|
|
|
8
10
|
```sh
|
|
9
11
|
andeo source push --branch feat/account-copy --json
|
|
@@ -23,6 +25,16 @@ review; `--expected-snapshot N` pins the inspected snapshot.
|
|
|
23
25
|
Human review remains the default. A merchant administrator may explicitly grant
|
|
24
26
|
stable principal IDs with `source merge-policy set --mode agent --principals IDS
|
|
25
27
|
--expected-revision N --idempotency-key KEY [--execution-seconds 300..86400]`.
|
|
28
|
+
This native-preview grant works with source protection enabled or disabled;
|
|
29
|
+
enabling protection is not required. With protection disabled, a saved grant for
|
|
30
|
+
the CLI credential's owner is required before merge admission. Ordinary developer
|
|
31
|
+
access is insufficient. The grant, owner access, exact refs and preview evidence
|
|
32
|
+
are rechecked before landing and publication. An administrator can configure the
|
|
33
|
+
grant through the CLI once; eligible merges need no console intervention.
|
|
34
|
+
Source protection independently blocks direct writes that bypass Andeo. Leaving
|
|
35
|
+
it disabled does not guarantee that every push to main followed preview review.
|
|
36
|
+
Do not push main directly as a substitute for this merge operation. Post-landing
|
|
37
|
+
branch cleanup retains the branch while source protection is disabled.
|
|
26
38
|
Changed validation/dependency inputs and artifact capabilities still require
|
|
27
39
|
review. Merge policy and default-branch publication policy are separate grants.
|
|
28
40
|
Preview-only publication returns `publication_not_enabled` after successful landing.
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Authenticated skills
|
|
2
2
|
|
|
3
|
+
The global Andeo guide is public and updates independently of CLI releases.
|
|
4
|
+
Run `andeo skill install --agent codex --force --json` to refresh its latest
|
|
5
|
+
compatible revision, without login. Check the returned source and revision;
|
|
6
|
+
`--bundled` selects the CLI's offline snapshot. `andeo doctor` checks global
|
|
7
|
+
guidance against the public revision. The private practice skills below still
|
|
8
|
+
require authentication and do not use this public endpoint.
|
|
9
|
+
|
|
3
10
|
Andeo distributes rolling implementation guidance through the authenticated CLI. The CLI is the access boundary: catalog and file reads use the current Andeo credential against the agent API, and the API reads private objects without returning an R2 URL.
|
|
4
11
|
|
|
5
12
|
## Discover and read
|