ossplate 0.2.2__tar.gz → 0.2.4__tar.gz
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.
- {ossplate-0.2.2 → ossplate-0.2.4}/PKG-INFO +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/ossplate/bin/linux-x64/ossplate +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/pyproject.toml +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/bin/linux-x64/ossplate +0 -0
- ossplate-0.2.4/src/ossplate/scaffold/assets/illustrations/chestplate.svg +85 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/Cargo.lock +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/Cargo.toml +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/main_tests.rs +66 -7
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold/identity_application.rs +11 -2
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/sync/metadata.rs +61 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/release-state.mjs +32 -12
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/package-lock.json +6 -6
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/package.json +5 -5
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-darwin-arm64/package.json +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-darwin-x64/package.json +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-linux-x64/package.json +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-win32-x64/package.json +1 -1
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-py/pyproject.toml +1 -1
- ossplate-0.2.2/src/ossplate/scaffold/assets/illustrations/chestplate.svg +0 -6
- {ossplate-0.2.2 → ossplate-0.2.4}/.gitignore +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/hatch_build.py +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/__init__.py +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/cli.py +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.github/workflows/ci.yml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.github/workflows/live-e2e-published.yml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.github/workflows/publish-npm.yml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.github/workflows/publish.yml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.github/workflows/release.yml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.gitignore +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.pre-commit-config.yaml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/CONTRIBUTING.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/LICENSE +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/runtime-targets.json +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/source-checkout.json +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/config.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/main.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/output.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/release.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold/projection.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold/template_root.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold_manifest.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/source_checkout.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/sync/text.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/sync.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/test_support.rs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0001-rust-core-thin-wrappers.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0002-sync-owns-bounded-identity.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0003-curated-scaffold-payload.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0004-release-orchestration-stays-core-owned.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0005-verification-enforces-source-and-installed-contracts.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0006-rust-core-uses-explicit-product-slices.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0007-split-scaffold-payload-and-source-checkout-contracts.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0008-stage-neutral-runtime-artifacts-for-wrapper-packaging.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0009-centralize-release-state-policy.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0010-scaffold-mirrors-are-generated-packaging-assets.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0011-consolidate-release-assertion-commands.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0012-dry-through-canonical-contracts-and-generation.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0013-pragmatic-solid-through-functional-core-and-thin-adapters.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0014-one-hexagonal-product-shell-centered-in-rust.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/architecture.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/customizing-the-template.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/hexagonal-shell.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/live-e2e.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/releases.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/testing.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/ossplate.toml +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/runtime-targets.json +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/assert-js-lockfile-state.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/bump-version.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/publish-local.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/release-check.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/release-plan.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/repair-js-lockfile.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/runtime-targets.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/verify-release.sh +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/verify.sh +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/wait-for-npm-versions.mjs +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/bin/ossplate.js +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-darwin-arm64/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-darwin-x64/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-linux-x64/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/platform-packages/ossplate-win32-x64/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/src/index.ts +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-js/tsconfig.json +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-py/README.md +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-py/hatch_build.py +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-py/src/ossplate/__init__.py +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/wrapper-py/src/ossplate/cli.py +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/tests/fixtures/ossplate-stub.sh +0 -0
- {ossplate-0.2.2 → ossplate-0.2.4}/tests/test_cli.py +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
|
|
3
|
+
<title id="title">Ossplate chest armor</title>
|
|
4
|
+
<desc id="desc">A transparent-background chestplate silhouette constructed from binary digits with a small red OSS mark.</desc>
|
|
5
|
+
<defs>
|
|
6
|
+
<path id="armor-shape" d="M156.7 25.83L89 39.38c-.1 58.57-1.74 119.32-43.49 167.22C104.4 246.5 189 260.7 247 248.8v-99L108.3 88.22l7.4-16.44L256 134.2l140.3-62.42 7.4 16.44L265 149.8v99c58 11.9 142.6-2.3 201.5-42.2-41.8-47.9-43.4-108.65-43.5-167.22l-67.7-13.55c-12.9 13.88-20.6 28.15-32.9 40.53C308.9 79.78 289.5 89 256 89c-33.5 0-52.9-9.22-66.4-22.64-12.3-12.38-20-26.65-32.9-40.53zM53.88 232.9C75.96 281 96.07 336.6 102.7 392.8l65 22.8c4.2-52.7 28.2-104 63.7-146.1-55.1 6.3-122.7-5.8-177.52-36.6zm404.22 0c-54.8 30.8-122.4 42.9-177.5 36.6 35.5 42.1 59.5 93.4 63.7 146.1l65.2-22.9c6.6-56.8 26.6-111.8 48.6-159.8zM256 269c-40.5 43.1-67.7 97.9-70.7 152.7l61.7 21.6V336h18v107.3l61.7-21.6c-3.1-54.8-30.2-109.6-70.7-152.7zm151.7 143.4L297 451.1v18.8l110.2-44.1c.1-4.5.3-8.9.5-13.4zm-303.3.1c.3 4.5.4 8.9.5 13.4l110.1 44v-18.7l-110.6-38.7zM279 457.4l-23 8.1-23-8v19.6l23 9.2 23-9.2v-19.7z"/>
|
|
7
|
+
<clipPath id="armor-clip">
|
|
8
|
+
<use href="#armor-shape"/>
|
|
9
|
+
</clipPath>
|
|
10
|
+
<mask id="armor-binary-mask" maskUnits="userSpaceOnUse">
|
|
11
|
+
<rect x="0" y="0" width="512" height="512" fill="#000"/>
|
|
12
|
+
<use href="#armor-shape" fill="#fff"/>
|
|
13
|
+
<rect x="286" y="156" width="92" height="48" rx="4" ry="4" fill="#000"/>
|
|
14
|
+
</mask>
|
|
15
|
+
<linearGradient id="binary-ink" x1="92" y1="40" x2="410" y2="470" gradientUnits="userSpaceOnUse">
|
|
16
|
+
<stop offset="0" stop-color="#94A3B8"/>
|
|
17
|
+
<stop offset=".52" stop-color="#CBD5E1"/>
|
|
18
|
+
<stop offset="1" stop-color="#64748B"/>
|
|
19
|
+
</linearGradient>
|
|
20
|
+
<g id="glyph-zero" shape-rendering="crispEdges">
|
|
21
|
+
<rect x="4" y="0" width="4" height="4"/>
|
|
22
|
+
<rect x="8" y="0" width="4" height="4"/>
|
|
23
|
+
<rect x="0" y="4" width="4" height="4"/>
|
|
24
|
+
<rect x="12" y="4" width="4" height="4"/>
|
|
25
|
+
<rect x="0" y="8" width="4" height="4"/>
|
|
26
|
+
<rect x="12" y="8" width="4" height="4"/>
|
|
27
|
+
<rect x="0" y="12" width="4" height="4"/>
|
|
28
|
+
<rect x="12" y="12" width="4" height="4"/>
|
|
29
|
+
<rect x="4" y="16" width="4" height="4"/>
|
|
30
|
+
<rect x="8" y="16" width="4" height="4"/>
|
|
31
|
+
</g>
|
|
32
|
+
<g id="glyph-one" shape-rendering="crispEdges">
|
|
33
|
+
<rect x="6" y="0" width="4" height="4"/>
|
|
34
|
+
<rect x="2" y="4" width="4" height="4"/>
|
|
35
|
+
<rect x="6" y="4" width="4" height="4"/>
|
|
36
|
+
<rect x="6" y="8" width="4" height="4"/>
|
|
37
|
+
<rect x="6" y="12" width="4" height="4"/>
|
|
38
|
+
<rect x="2" y="16" width="4" height="4"/>
|
|
39
|
+
<rect x="6" y="16" width="4" height="4"/>
|
|
40
|
+
<rect x="10" y="16" width="4" height="4"/>
|
|
41
|
+
</g>
|
|
42
|
+
<pattern id="binary-pattern" width="144" height="24" patternUnits="userSpaceOnUse">
|
|
43
|
+
<g fill="url(#binary-ink)">
|
|
44
|
+
<use href="#glyph-one" x="0" y="2"/>
|
|
45
|
+
<use href="#glyph-zero" x="18" y="2"/>
|
|
46
|
+
<use href="#glyph-one" x="36" y="2"/>
|
|
47
|
+
<use href="#glyph-one" x="54" y="2"/>
|
|
48
|
+
<use href="#glyph-zero" x="72" y="2"/>
|
|
49
|
+
<use href="#glyph-one" x="90" y="2"/>
|
|
50
|
+
<use href="#glyph-zero" x="108" y="2"/>
|
|
51
|
+
<use href="#glyph-zero" x="126" y="2"/>
|
|
52
|
+
</g>
|
|
53
|
+
</pattern>
|
|
54
|
+
</defs>
|
|
55
|
+
<g clip-path="url(#armor-clip)">
|
|
56
|
+
<rect x="0" y="0" width="512" height="512" mask="url(#armor-binary-mask)" fill="url(#binary-pattern)"/>
|
|
57
|
+
<g fill="#DC2626" shape-rendering="crispEdges" transform="translate(304 166)">
|
|
58
|
+
<g transform="translate(0 0)">
|
|
59
|
+
<use href="#glyph-zero"/>
|
|
60
|
+
</g>
|
|
61
|
+
<g transform="translate(22 0)">
|
|
62
|
+
<rect x="4" y="0" width="4" height="4"/>
|
|
63
|
+
<rect x="8" y="0" width="4" height="4"/>
|
|
64
|
+
<rect x="0" y="4" width="4" height="4"/>
|
|
65
|
+
<rect x="4" y="8" width="4" height="4"/>
|
|
66
|
+
<rect x="8" y="8" width="4" height="4"/>
|
|
67
|
+
<rect x="12" y="8" width="4" height="4"/>
|
|
68
|
+
<rect x="12" y="12" width="4" height="4"/>
|
|
69
|
+
<rect x="4" y="16" width="4" height="4"/>
|
|
70
|
+
<rect x="8" y="16" width="4" height="4"/>
|
|
71
|
+
</g>
|
|
72
|
+
<g transform="translate(44 0)">
|
|
73
|
+
<rect x="4" y="0" width="4" height="4"/>
|
|
74
|
+
<rect x="8" y="0" width="4" height="4"/>
|
|
75
|
+
<rect x="0" y="4" width="4" height="4"/>
|
|
76
|
+
<rect x="4" y="8" width="4" height="4"/>
|
|
77
|
+
<rect x="8" y="8" width="4" height="4"/>
|
|
78
|
+
<rect x="12" y="8" width="4" height="4"/>
|
|
79
|
+
<rect x="12" y="12" width="4" height="4"/>
|
|
80
|
+
<rect x="4" y="16" width="4" height="4"/>
|
|
81
|
+
<rect x="8" y="16" width="4" height="4"/>
|
|
82
|
+
</g>
|
|
83
|
+
</g>
|
|
84
|
+
</g>
|
|
85
|
+
</svg>
|
|
@@ -71,6 +71,7 @@ fn sync_check_detects_drift_and_sync_fixes_it() {
|
|
|
71
71
|
#[test]
|
|
72
72
|
fn sync_owns_runtime_package_metadata() {
|
|
73
73
|
let root = make_fixture_root();
|
|
74
|
+
let config = load_config(&root).unwrap();
|
|
74
75
|
fs::write(
|
|
75
76
|
root.join("wrapper-js/platform-packages/ossplate-darwin-arm64/package.json"),
|
|
76
77
|
"{\n \"name\": \"bad-runtime\"\n}\n",
|
|
@@ -84,7 +85,10 @@ fn sync_owns_runtime_package_metadata() {
|
|
|
84
85
|
root.join("wrapper-js/platform-packages/ossplate-darwin-arm64/package.json"),
|
|
85
86
|
)
|
|
86
87
|
.unwrap();
|
|
87
|
-
assert!(synced.contains(
|
|
88
|
+
assert!(synced.contains(&format!(
|
|
89
|
+
"\"name\": \"{}-darwin-arm64\"",
|
|
90
|
+
config.packages.npm_package
|
|
91
|
+
)));
|
|
88
92
|
assert!(validate_repo(&root).unwrap().ok);
|
|
89
93
|
}
|
|
90
94
|
|
|
@@ -287,6 +291,62 @@ fn create_applies_identity_overrides_before_sync() {
|
|
|
287
291
|
fs::remove_dir_all(&target).unwrap();
|
|
288
292
|
}
|
|
289
293
|
|
|
294
|
+
#[test]
|
|
295
|
+
fn create_with_non_default_package_identity_is_valid_immediately() {
|
|
296
|
+
let source_root = make_source_checkout_root();
|
|
297
|
+
let target = unique_temp_path("ossplate-bootstrap-agentcode");
|
|
298
|
+
if target.exists() {
|
|
299
|
+
fs::remove_dir_all(&target).unwrap();
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
create_scaffold_from(
|
|
303
|
+
&source_root,
|
|
304
|
+
&target,
|
|
305
|
+
&IdentityOverrides {
|
|
306
|
+
name: Some("Agentcode".to_string()),
|
|
307
|
+
description: Some(
|
|
308
|
+
"Build and ship the agentcode CLI through Rust, npm, and PyPI.".to_string(),
|
|
309
|
+
),
|
|
310
|
+
repository: Some("https://github.com/stefdevscore/agentcode".to_string()),
|
|
311
|
+
license: Some("Apache-2.0".to_string()),
|
|
312
|
+
author_name: Some("Azk".to_string()),
|
|
313
|
+
author_email: Some("azk@example.com".to_string()),
|
|
314
|
+
rust_crate: None,
|
|
315
|
+
npm_package: None,
|
|
316
|
+
python_package: None,
|
|
317
|
+
command: Some("agentcode".to_string()),
|
|
318
|
+
},
|
|
319
|
+
)
|
|
320
|
+
.unwrap();
|
|
321
|
+
|
|
322
|
+
assert!(validate_repo(&target).unwrap().ok);
|
|
323
|
+
assert!(sync_repo(&target, true).is_ok());
|
|
324
|
+
|
|
325
|
+
let cargo_toml = fs::read_to_string(target.join("core-rs/Cargo.toml")).unwrap();
|
|
326
|
+
assert!(cargo_toml.contains("name = \"agentcode\""));
|
|
327
|
+
assert!(cargo_toml.contains("default-run = \"agentcode\""));
|
|
328
|
+
assert!(cargo_toml.contains("[[bin]]"));
|
|
329
|
+
|
|
330
|
+
let wrapper_package: serde_json::Value =
|
|
331
|
+
serde_json::from_str(&fs::read_to_string(target.join("wrapper-js/package.json")).unwrap())
|
|
332
|
+
.unwrap();
|
|
333
|
+
assert_eq!(wrapper_package["name"], "agentcode");
|
|
334
|
+
|
|
335
|
+
let runtime_package: serde_json::Value = serde_json::from_str(
|
|
336
|
+
&fs::read_to_string(
|
|
337
|
+
target.join("wrapper-js/platform-packages/ossplate-darwin-arm64/package.json"),
|
|
338
|
+
)
|
|
339
|
+
.unwrap(),
|
|
340
|
+
)
|
|
341
|
+
.unwrap();
|
|
342
|
+
assert_eq!(runtime_package["name"], "agentcode-darwin-arm64");
|
|
343
|
+
|
|
344
|
+
let pyproject = fs::read_to_string(target.join("wrapper-py/pyproject.toml")).unwrap();
|
|
345
|
+
assert!(pyproject.contains("name = \"agentcode\""));
|
|
346
|
+
|
|
347
|
+
fs::remove_dir_all(&target).unwrap();
|
|
348
|
+
}
|
|
349
|
+
|
|
290
350
|
#[test]
|
|
291
351
|
fn create_fails_when_target_directory_is_not_empty() {
|
|
292
352
|
let source_root = make_source_checkout_root();
|
|
@@ -324,20 +384,18 @@ fn create_fails_when_target_is_inside_source_tree() {
|
|
|
324
384
|
#[test]
|
|
325
385
|
fn sync_preserves_unowned_root_readme_content() {
|
|
326
386
|
let root = make_fixture_root();
|
|
387
|
+
let config = load_config(&root).unwrap();
|
|
327
388
|
let original = fs::read_to_string(root.join("README.md")).unwrap();
|
|
328
389
|
fs::write(
|
|
329
390
|
root.join("README.md"),
|
|
330
|
-
original.replace(
|
|
331
|
-
"Build one project, ship it everywhere",
|
|
332
|
-
"Changed identity text",
|
|
333
|
-
),
|
|
391
|
+
original.replace(&config.project.description, "Changed identity text"),
|
|
334
392
|
)
|
|
335
393
|
.unwrap();
|
|
336
394
|
|
|
337
395
|
sync_repo(&root, false).unwrap();
|
|
338
396
|
let synced = fs::read_to_string(root.join("README.md")).unwrap();
|
|
339
397
|
assert!(synced.contains("## What It Does"));
|
|
340
|
-
assert!(synced.contains(
|
|
398
|
+
assert!(synced.contains(&config.project.description));
|
|
341
399
|
}
|
|
342
400
|
|
|
343
401
|
#[test]
|
|
@@ -357,7 +415,8 @@ fn github_link_helpers_render_absolute_main_urls() {
|
|
|
357
415
|
fn rendered_wrapper_readmes_use_absolute_doc_links() {
|
|
358
416
|
let config = load_config(&make_fixture_root()).unwrap();
|
|
359
417
|
let rendered = render_wrapper_readme("Python", &config);
|
|
360
|
-
assert!(rendered
|
|
418
|
+
assert!(rendered
|
|
419
|
+
.contains(&github_blob_url(&config.project.repository, "main", "docs/README.md").unwrap()));
|
|
361
420
|
assert!(!rendered.contains("../docs/README.md"));
|
|
362
421
|
assert!(!rendered.contains("../docs/testing.md"));
|
|
363
422
|
assert!(!rendered.contains("../docs/architecture.md"));
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold/identity_application.rs
RENAMED
|
@@ -36,6 +36,9 @@ fn apply_overrides(config: &mut ToolConfig, overrides: &IdentityOverrides) {
|
|
|
36
36
|
if let Some(value) = &overrides.author_email {
|
|
37
37
|
config.author.email = value.clone();
|
|
38
38
|
}
|
|
39
|
+
if let Some(value) = &overrides.command {
|
|
40
|
+
config.packages.command = value.clone();
|
|
41
|
+
}
|
|
39
42
|
if let Some(value) = &overrides.rust_crate {
|
|
40
43
|
config.packages.rust_crate = value.clone();
|
|
41
44
|
}
|
|
@@ -45,7 +48,13 @@ fn apply_overrides(config: &mut ToolConfig, overrides: &IdentityOverrides) {
|
|
|
45
48
|
if let Some(value) = &overrides.python_package {
|
|
46
49
|
config.packages.python_package = value.clone();
|
|
47
50
|
}
|
|
48
|
-
if
|
|
49
|
-
config.packages.
|
|
51
|
+
if overrides.command.is_some() && overrides.rust_crate.is_none() {
|
|
52
|
+
config.packages.rust_crate = config.packages.command.clone();
|
|
53
|
+
}
|
|
54
|
+
if overrides.command.is_some() && overrides.npm_package.is_none() {
|
|
55
|
+
config.packages.npm_package = config.packages.command.clone();
|
|
56
|
+
}
|
|
57
|
+
if overrides.command.is_some() && overrides.python_package.is_none() {
|
|
58
|
+
config.packages.python_package = config.packages.command.clone();
|
|
50
59
|
}
|
|
51
60
|
}
|
|
@@ -27,6 +27,10 @@ fn runtime_package_specs() -> Vec<RuntimePackageSpec> {
|
|
|
27
27
|
.targets
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
fn rust_bin_file_path() -> &'static str {
|
|
31
|
+
"src/main.rs"
|
|
32
|
+
}
|
|
33
|
+
|
|
30
34
|
pub(crate) fn validate_cargo_toml(
|
|
31
35
|
config: &ToolConfig,
|
|
32
36
|
content: &str,
|
|
@@ -45,6 +49,13 @@ pub(crate) fn validate_cargo_toml(
|
|
|
45
49
|
package.get("name"),
|
|
46
50
|
&config.packages.rust_crate,
|
|
47
51
|
);
|
|
52
|
+
check_string_field(
|
|
53
|
+
&mut issues,
|
|
54
|
+
"core-rs/Cargo.toml",
|
|
55
|
+
"package.default-run",
|
|
56
|
+
package.get("default-run"),
|
|
57
|
+
&config.packages.command,
|
|
58
|
+
);
|
|
48
59
|
check_string_field(
|
|
49
60
|
&mut issues,
|
|
50
61
|
"core-rs/Cargo.toml",
|
|
@@ -90,6 +101,39 @@ pub(crate) fn validate_cargo_toml(
|
|
|
90
101
|
Some(actual_author),
|
|
91
102
|
));
|
|
92
103
|
}
|
|
104
|
+
if let Some(bin) = value
|
|
105
|
+
.get("bin")
|
|
106
|
+
.and_then(TomlValue::as_array)
|
|
107
|
+
.and_then(|bins| bins.first())
|
|
108
|
+
.and_then(TomlValue::as_table)
|
|
109
|
+
{
|
|
110
|
+
check_string_field(
|
|
111
|
+
&mut issues,
|
|
112
|
+
"core-rs/Cargo.toml",
|
|
113
|
+
"bin[0].name",
|
|
114
|
+
bin.get("name"),
|
|
115
|
+
&config.packages.command,
|
|
116
|
+
);
|
|
117
|
+
check_string_field(
|
|
118
|
+
&mut issues,
|
|
119
|
+
"core-rs/Cargo.toml",
|
|
120
|
+
"bin[0].path",
|
|
121
|
+
bin.get("path"),
|
|
122
|
+
rust_bin_file_path(),
|
|
123
|
+
);
|
|
124
|
+
} else {
|
|
125
|
+
issues.push(issue(
|
|
126
|
+
"core-rs/Cargo.toml",
|
|
127
|
+
"bin",
|
|
128
|
+
"owned metadata differs from the canonical project identity",
|
|
129
|
+
Some(format!(
|
|
130
|
+
"[[bin]] name={}, path={}",
|
|
131
|
+
config.packages.command,
|
|
132
|
+
rust_bin_file_path()
|
|
133
|
+
)),
|
|
134
|
+
None,
|
|
135
|
+
));
|
|
136
|
+
}
|
|
93
137
|
Ok(issues)
|
|
94
138
|
}
|
|
95
139
|
|
|
@@ -104,6 +148,10 @@ pub(crate) fn sync_cargo_toml(config: &ToolConfig, content: &str) -> Result<Stri
|
|
|
104
148
|
"name".into(),
|
|
105
149
|
TomlValue::String(config.packages.rust_crate.clone()),
|
|
106
150
|
);
|
|
151
|
+
package.insert(
|
|
152
|
+
"default-run".into(),
|
|
153
|
+
TomlValue::String(config.packages.command.clone()),
|
|
154
|
+
);
|
|
107
155
|
package.insert(
|
|
108
156
|
"authors".into(),
|
|
109
157
|
TomlValue::Array(vec![TomlValue::String(format!(
|
|
@@ -127,6 +175,19 @@ pub(crate) fn sync_cargo_toml(config: &ToolConfig, content: &str) -> Result<Stri
|
|
|
127
175
|
"homepage".into(),
|
|
128
176
|
TomlValue::String(config.project.repository.clone()),
|
|
129
177
|
);
|
|
178
|
+
let mut bin = toml::map::Map::new();
|
|
179
|
+
bin.insert(
|
|
180
|
+
"name".into(),
|
|
181
|
+
TomlValue::String(config.packages.command.clone()),
|
|
182
|
+
);
|
|
183
|
+
bin.insert(
|
|
184
|
+
"path".into(),
|
|
185
|
+
TomlValue::String(rust_bin_file_path().to_string()),
|
|
186
|
+
);
|
|
187
|
+
value
|
|
188
|
+
.as_table_mut()
|
|
189
|
+
.ok_or_else(|| anyhow!("core-rs/Cargo.toml must be a TOML table"))?
|
|
190
|
+
.insert("bin".into(), TomlValue::Array(vec![TomlValue::Table(bin)]));
|
|
130
191
|
Ok(toml::to_string(&value)?)
|
|
131
192
|
}
|
|
132
193
|
|
|
@@ -23,21 +23,16 @@ export function readScaffoldPayload() {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export function readCargoVersion() {
|
|
26
|
-
|
|
27
|
-
const match = cargoToml.match(/^version = "([^"]+)"$/m);
|
|
28
|
-
if (!match) {
|
|
29
|
-
fail("failed to read version from core-rs/Cargo.toml");
|
|
30
|
-
}
|
|
31
|
-
return match[1];
|
|
26
|
+
return readTomlSectionValue(readText("core-rs/Cargo.toml"), "package", "version", "core-rs/Cargo.toml");
|
|
32
27
|
}
|
|
33
28
|
|
|
34
29
|
export function readPyprojectVersion() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
return readTomlSectionValue(
|
|
31
|
+
readText("wrapper-py/pyproject.toml"),
|
|
32
|
+
"project",
|
|
33
|
+
"version",
|
|
34
|
+
"wrapper-py/pyproject.toml"
|
|
35
|
+
);
|
|
41
36
|
}
|
|
42
37
|
|
|
43
38
|
export function readVersions(rootPackage = readRootPackage()) {
|
|
@@ -260,6 +255,27 @@ function execNpm(args, options = {}) {
|
|
|
260
255
|
return execFileSync(npmCommand(), args, options);
|
|
261
256
|
}
|
|
262
257
|
|
|
258
|
+
export function readTomlSectionValue(content, sectionName, key, fileLabel) {
|
|
259
|
+
const sectionPattern = new RegExp(`^\\[${escapeRegExp(sectionName)}\\]\\s*$`, "m");
|
|
260
|
+
const sectionMatch = sectionPattern.exec(content);
|
|
261
|
+
if (!sectionMatch) {
|
|
262
|
+
fail(`failed to read ${key} from ${fileLabel}`);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const sectionStart = sectionMatch.index + sectionMatch[0].length;
|
|
266
|
+
const nextSectionOffset = content.slice(sectionStart).search(/^\[[^\]]+\]\s*$/m);
|
|
267
|
+
const sectionBody =
|
|
268
|
+
nextSectionOffset === -1
|
|
269
|
+
? content.slice(sectionStart)
|
|
270
|
+
: content.slice(sectionStart, sectionStart + nextSectionOffset);
|
|
271
|
+
const valuePattern = new RegExp(`^${escapeRegExp(key)}\\s*=\\s*"([^"]+)"\\s*$`, "m");
|
|
272
|
+
const valueMatch = valuePattern.exec(sectionBody);
|
|
273
|
+
if (!valueMatch) {
|
|
274
|
+
fail(`failed to read ${key} from ${fileLabel}`);
|
|
275
|
+
}
|
|
276
|
+
return valueMatch[1];
|
|
277
|
+
}
|
|
278
|
+
|
|
263
279
|
function assertAllEqual(entries, message) {
|
|
264
280
|
const values = new Set(entries.map(([, value]) => value));
|
|
265
281
|
if (values.size !== 1) {
|
|
@@ -280,3 +296,7 @@ function assertDeepEqual(actual, expected, message) {
|
|
|
280
296
|
function fail(message) {
|
|
281
297
|
throw new Error(message);
|
|
282
298
|
}
|
|
299
|
+
|
|
300
|
+
function escapeRegExp(value) {
|
|
301
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
302
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ossplate",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "ossplate",
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.4",
|
|
10
10
|
"license": "Unlicense",
|
|
11
11
|
"bin": {
|
|
12
12
|
"ossplate": "bin/ossplate.js"
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"typescript": "^5.9.3"
|
|
17
17
|
},
|
|
18
18
|
"optionalDependencies": {
|
|
19
|
-
"ossplate-darwin-arm64": "0.2.
|
|
20
|
-
"ossplate-darwin-x64": "0.2.
|
|
21
|
-
"ossplate-linux-x64": "0.2.
|
|
22
|
-
"ossplate-windows-x64": "0.2.
|
|
19
|
+
"ossplate-darwin-arm64": "0.2.4",
|
|
20
|
+
"ossplate-darwin-x64": "0.2.4",
|
|
21
|
+
"ossplate-linux-x64": "0.2.4",
|
|
22
|
+
"ossplate-windows-x64": "0.2.4"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"node_modules/@types/node": {
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"main": "./dist/index.js",
|
|
25
25
|
"name": "ossplate",
|
|
26
26
|
"optionalDependencies": {
|
|
27
|
-
"ossplate-darwin-arm64": "0.2.
|
|
28
|
-
"ossplate-darwin-x64": "0.2.
|
|
29
|
-
"ossplate-linux-x64": "0.2.
|
|
30
|
-
"ossplate-windows-x64": "0.2.
|
|
27
|
+
"ossplate-darwin-arm64": "0.2.4",
|
|
28
|
+
"ossplate-darwin-x64": "0.2.4",
|
|
29
|
+
"ossplate-linux-x64": "0.2.4",
|
|
30
|
+
"ossplate-windows-x64": "0.2.4"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"test": "npm run build && node --test test/cli.test.js"
|
|
46
46
|
},
|
|
47
47
|
"type": "module",
|
|
48
|
-
"version": "0.2.
|
|
48
|
+
"version": "0.2.4"
|
|
49
49
|
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
|
|
3
|
-
<title id="title">Ossplate chest armor</title>
|
|
4
|
-
<desc id="desc">A charcoal gray chestplate with shoulder guards.</desc>
|
|
5
|
-
<path fill="#4B5563" d="M156.7 25.83L89 39.38c-.1 58.57-1.74 119.32-43.49 167.22C104.4 246.5 189 260.7 247 248.8v-99L108.3 88.22l7.4-16.44L256 134.2l140.3-62.42 7.4 16.44L265 149.8v99c58 11.9 142.6-2.3 201.5-42.2-41.8-47.9-43.4-108.65-43.5-167.22l-67.7-13.55c-12.9 13.88-20.6 28.15-32.9 40.53C308.9 79.78 289.5 89 256 89c-33.5 0-52.9-9.22-66.4-22.64-12.3-12.38-20-26.65-32.9-40.53zM53.88 232.9C75.96 281 96.07 336.6 102.7 392.8l65 22.8c4.2-52.7 28.2-104 63.7-146.1-55.1 6.3-122.7-5.8-177.52-36.6zm404.22 0c-54.8 30.8-122.4 42.9-177.5 36.6 35.5 42.1 59.5 93.4 63.7 146.1l65.2-22.9c6.6-56.8 26.6-111.8 48.6-159.8zM256 269c-40.5 43.1-67.7 97.9-70.7 152.7l61.7 21.6V336h18v107.3l61.7-21.6c-3.1-54.8-30.2-109.6-70.7-152.7zm151.7 143.4L297 451.1v18.8l110.2-44.1c.1-4.5.3-8.9.5-13.4zm-303.3.1c.3 4.5.4 8.9.5 13.4l110.1 44v-18.7l-110.6-38.7zM279 457.4l-23 8.1-23-8v19.6l23 9.2 23-9.2v-19.7z"/>
|
|
6
|
-
</svg>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/.github/workflows/live-e2e-published.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/core-rs/src/scaffold/template_root.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0001-rust-core-thin-wrappers.md
RENAMED
|
File without changes
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0002-sync-owns-bounded-identity.md
RENAMED
|
File without changes
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/docs/adrs/0003-curated-scaffold-payload.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ossplate-0.2.2 → ossplate-0.2.4}/src/ossplate/scaffold/scripts/assert-js-lockfile-state.mjs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|