Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .changeset/sdk-structure-upgrade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@platforma-open/milaboratories.gpu-test": patch
"@platforma-open/milaboratories.gpu-test.model": patch
"@platforma-open/milaboratories.gpu-test.ui": patch
"@platforma-open/milaboratories.gpu-test.workflow": patch
"@platforma-open/milaboratories.gpu-test.gpu-info": patch
---

Upgrade SDK catalog and apply the block-tools structure upgrade. Migrate the
workflow exec resource request to the new `resources({ onCPU, onGPU })` API,
pin `vue` to `3.5.24`, drop the removed `@platforma-sdk/ui-vue/styles` import,
and rename the model export `model` -> `platforma`.
8 changes: 3 additions & 5 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,13 @@ jobs:
- init
uses: milaboratory/github-ci/.github/workflows/node-simple-pnpm.yaml@v4
with:
app-name: 'Block: GPU Detection'
app-name: 'Block: Gpu Test'
app-name-slug: 'block-gpu-test'

node-version: '20.x'
build-script-name: 'build'
pnpm-recursive-build: false

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Workspace test executables are missing

When CI runs the newly enabled test phase, the root script delegates to turbo run test, which executes the retained test: vitest scripts in the model and UI workspaces even though this change removes their Vitest dependencies, causing the build workflow to terminate with vitest: command not found.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/build.yaml
Line: 30

Comment:
**Workspace test executables are missing**

When CI runs the newly enabled test phase, the root script delegates to `turbo run test`, which executes the retained `test: vitest` scripts in the model and UI workspaces even though this change removes their Vitest dependencies, causing the build workflow to terminate with `vitest: command not found`.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code

test: false
test: true
test-script-name: 'test'
pnpm-recursive-tests: false
team-id: 'ciplopen'
Expand Down Expand Up @@ -58,12 +57,11 @@ jobs:
"AWS_CI_IAM_MONOREPO_SIMPLE_ROLE": ${{ toJSON(secrets.AWS_CI_IAM_MONOREPO_SIMPLE_ROLE) }},
"AWS_CI_TURBOREPO_S3_BUCKET": ${{ toJSON(secrets.AWS_CI_TURBOREPO_S3_BUCKET) }},
"PL_REGISTRY_PLATFORMA_OPEN_UPLOAD_URL": ${{ toJSON(secrets.PL_REGISTRY_PLOPEN_UPLOAD_URL) }},
"PL_DOCKER_REGISTRY_PUSH_TO": "quay.io/milaboratories/pl-containers",
"QUAY_USERNAME": ${{ toJSON(secrets.QUAY_USERNAME) }},
"QUAY_ROBOT_TOKEN": ${{ toJSON(secrets.QUAY_ROBOT_TOKEN) }} }

SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
SLACK_CHANNEL: ${{ secrets.SLACK_BLOCKS_CI_CHANNEL }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}

GH_ZEN_APP_ID: ${{ secrets.GH_ZEN_APP_ID }}
GH_ZEN_APP_PRIVATE_KEY: ${{ secrets.GH_ZEN_APP_PRIVATE_KEY }}
34 changes: 34 additions & 0 deletions .github/workflows/mark-stable.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Mark Platforma Block as Stable
on:
workflow_dispatch: {}
jobs:
init:
runs-on: ubuntu-latest
steps:
- uses: milaboratory/github-ci/actions/context/init@v4

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 security Release actions use mutable tags

The new stable-release workflow loads both its initialization action and publishing workflow through mutable v4 tags while passing npm and AWS credentials, allowing a moved upstream tag to run unreviewed code with release credentials. Pin both references to reviewed commit SHAs. How this was verified: the workflow uses tag-based uses references and passes publishing credentials to the referenced workflow.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/mark-stable.yaml
Line: 8

Comment:
**Release actions use mutable tags**

The new stable-release workflow loads both its initialization action and publishing workflow through mutable `v4` tags while passing npm and AWS credentials, allowing a moved upstream tag to run unreviewed code with release credentials. Pin both references to reviewed commit SHAs. **How this was verified:** the workflow uses tag-based `uses` references and passes publishing credentials to the referenced workflow.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Claude Code

with:
version-canonize: false
branch-versioning: main
run:
needs:
- init
uses: milaboratory/github-ci/.github/workflows/block-mark-stable.yaml@v4
with:
app-name: 'Block: Gpu Test - Mark Stable'
node-version: '20.x'
npmrc-config: |
{
"registries": {
"https://registry.npmjs.org/": {
"scopes": ["milaboratories", "platforma-sdk", "platforma-open"],
"tokenVar": "NPMJS_TOKEN"
}
}
}
secrets:
env: |
{ "NPMJS_TOKEN": ${{ toJSON(secrets.NPMJS_TOKEN) }},
"AWS_CI_IAM_MONOREPO_SIMPLE_ROLE": ${{ toJSON(secrets.AWS_CI_IAM_MONOREPO_SIMPLE_ROLE) }} }

SLACK_CHANNEL: ${{ secrets.SLACK_BLOCKS_CI_CHANNEL }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
6 changes: 0 additions & 6 deletions block/index.d.ts

This file was deleted.

8 changes: 0 additions & 8 deletions block/index.js

This file was deleted.

38 changes: 26 additions & 12 deletions block/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,37 @@
"name": "@platforma-open/milaboratories.gpu-test",
"version": "0.7.2",
"files": [
"index.d.ts",
"index.js"
"dist",
"block-pack"
],
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"sources": "./src/index.ts",
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
}
},
"scripts": {
"build": "shx rm -rf ./block-pack && block-tools pack",
"mark-stable": "block-tools mark-stable -r 's3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1'",
"prepublishOnly": "block-tools pack && block-tools publish -r 's3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1'",
"do-pack": "shx rm -f *.tgz && block-tools pack && pnpm pack && shx mv *.tgz package.tgz"
"build": "ts-builder build --target block-facade && block-tools pack",
"prepublishOnly": "block-tools publish -r s3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1 --registry-serve-url https://blocks.pl-open.science",
"do-pack": "pnpm pack && shx mv *.tgz package.tgz",
"check": "ts-builder type-check --target block-facade"
},
"dependencies": {
"dependencies": {},
"devDependencies": {
"@milaboratories/ts-builder": "catalog:",
"@milaboratories/ts-configs": "catalog:",
"@platforma-open/milaboratories.gpu-test.model": "workspace:*",
"@platforma-open/milaboratories.gpu-test.ui": "workspace:*",
"@platforma-open/milaboratories.gpu-test.workflow": "workspace:*"
},
"devDependencies": {
"@platforma-sdk/block-tools": "file:/Users/pvyazankin/mictx5/core/platforma/tools/block-tools/package.tgz",
"shx": "catalog:"
"@platforma-open/milaboratories.gpu-test.workflow": "workspace:*",
"@platforma-sdk/block-tools": "catalog:",
"@platforma-sdk/model": "catalog:",
"shx": "catalog:",
"typescript": "catalog:"
},
"packageManager": "pnpm@9.12.0",
"block": {
Expand Down
5 changes: 5 additions & 0 deletions block/src/AGENTS.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// This file is managed by `block-tools structure`. Do not edit by hand.
// Narrow MCP / AI surface.

export type { BlockContract, BlockOutputs, BlockData } from "./index";
export * from "./agents-extra";
8 changes: 8 additions & 0 deletions block/src/agents-extra.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Author-owned. `block-tools structure` does not modify this file.
// MCP / AI extension surface. Add types and functions the agent
// surface should expose.
//
// In the future this file will host JS functions the MCP runtime
// can execute. The `.d.ts` declarations stay visible to the agent;
// the JS bodies execute in the MCP code-execution context (the
// agent sees the types but not the implementation).
9 changes: 9 additions & 0 deletions block/src/block-extra.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Author-owned. `block-tools structure` does not modify this file.
// Add block-specific helper types or values the consumer surface
// should expose. Anything you `export` here flows out via the
// main entry (./index re-exports this file).
//
// Do NOT redefine: BlockContract, BlockOutputs, BlockData,
// BlockPointer, platforma, or the block-named <PascalName>Block*
// aliases — those names come from ./index and `export *` from this
// file would shadow them.
55 changes: 55 additions & 0 deletions block/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// This file is managed by `block-tools structure`. Do not edit by hand.
// Author content lives in ./block-extra.ts.

import { platforma } from "@platforma-open/milaboratories.gpu-test.model";
import {
InferOutputsType,
InferDataType,
InferHrefType,
} from "@platforma-sdk/model";

export { platforma };

export type BlockContract = {
outputs: InferOutputsType<typeof platforma>;
data: InferDataType<typeof platforma>;
href: InferHrefType<typeof platforma>;
};

export type BlockOutputs = BlockContract["outputs"];
export type BlockData = BlockContract["data"];

// import.meta.url is a file: URL (always forward-slash, even on Windows:
// file:///C:/…). We expose URLs, NOT paths — the facade stays dependency-free
// and loadable in minimal engines (e.g. QuickJS), and each consumer converts
// at its own edge with the right tool (fileURLToPath in Node), where Windows
// drive letters / %-encoding / UNC are handled correctly. The bundled entry
// sits one dir under the package root (dist/index.js, or src/index.ts in dev),
// so the root is two URL segments up. The structurer owns this layout —
// consumers read these URLs, they never reconstruct <root>/block-pack.
//
// TypeScript ships `ImportMeta.url` only in the `dom`/`webworker` libs; the
// facade tsconfig is lib-minimal (no `dom`, no `@types/node`) by design. We
// type the one ESM-standard member we use with a local cast rather than a
// `declare global` — a global augmentation would leak into the published
// `dist/index.d.ts` and clash with `@types/node`'s `ImportMeta` in full-Node
// consumers (test packages, the Middle Layer).
const selfUrl = (import.meta as ImportMeta & { url: string }).url;
const dirUrl = selfUrl.slice(0, selfUrl.lastIndexOf("/"));
const rootUrl = dirUrl.slice(0, dirUrl.lastIndexOf("/"));

export const BlockPointer = {
type: "from-pack-v2" as const,
packUrl: rootUrl + "/block-pack",
rootUrl,
} as const;

// Block-named aliases for readable cross-block imports in tests and
// consumer code. Same types / same runtime value as the universal
// names above; the aliases avoid `as`-renames at the import site.
export type GpuTestBlockContract = BlockContract;
export type GpuTestBlockOutputs = BlockOutputs;
export type GpuTestBlockData = BlockData;
export const GpuTestBlockPointer = BlockPointer;

export * from "./block-extra";
4 changes: 4 additions & 0 deletions block/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "@milaboratories/ts-configs/block/facade",
"include": ["src/**/*"]
}
9 changes: 3 additions & 6 deletions model/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "@platforma-open/milaboratories.gpu-test.model",
"version": "0.4.0",
"private": true,
"description": "Block model",
"type": "module",
"main": "dist/index.cjs",
Expand All @@ -18,8 +19,6 @@
"build": "ts-builder build --target block-model && block-tools build-model",
"watch": "ts-builder build --target block-model --watch",
"type-check": "ts-builder type-check --target block-model",
"test": "vitest",
"lint": "eslint .",
"do-pack": "shx rm -f *.tgz && pnpm pack && shx mv *.tgz package.tgz",
"fmt": "ts-builder format",
"check": "ts-builder check --target block-model"
Expand All @@ -30,10 +29,8 @@
"devDependencies": {
"@milaboratories/ts-builder": "catalog:",
"@milaboratories/ts-configs": "catalog:",
"@platforma-sdk/block-tools": "file:/Users/pvyazankin/mictx5/core/platforma/tools/block-tools/package.tgz",
"@platforma-sdk/eslint-config": "catalog:",
"eslint": "catalog:",
"vitest": "catalog:"
"@platforma-sdk/block-tools": "catalog:",
"eslint": "catalog:"
},
"peerDependencies": {
"@types/node": "*",
Expand Down
2 changes: 1 addition & 1 deletion model/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export type BlockArgs = {
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- UI state will be added in Step 8
export type UiState = {};

export const model = BlockModel.create()
export const platforma = BlockModel.create()
.withArgs<BlockArgs>({
seed: Math.floor(Math.random() * 2147483647),
matrixSize: "4000",
Expand Down
11 changes: 3 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
"check": "turbo run check",
"test:dry-run": "env PL_PKG_DEV=local turbo run test --dry-run=json",
"mark-stable": "turbo run mark-stable",
"update": "block-tools structure refresh --update-deps-only && pnpm i && block-tools structure refresh && pnpm fmt"
"upgrade-sdk": "block-tools structure refresh --update-deps-only && pnpm i && block-tools structure refresh && pnpm i && pnpm fmt"
},
"devDependencies": {
"@changesets/cli": "catalog:",
"@milaboratories/ts-builder": "catalog:",
"@platforma-sdk/block-tools": "file:/Users/pvyazankin/mictx5/core/platforma/tools/block-tools/package.tgz",
"@platforma-sdk/block-tools": "catalog:",
"shx": "catalog:",
"turbo": "catalog:",
"typescript": "catalog:"
Expand All @@ -29,10 +29,5 @@
"oxfmt": "*",
"oxlint": "*"
},
"packageManager": "pnpm@9.12.0",
"pnpm": {
"overrides": {
"@platforma-sdk/block-tools": "file:///Users/pvyazankin/mictx5/core/platforma/tools/block-tools/package.tgz"
}
}
"packageManager": "pnpm@9.12.0"
}
Loading
Loading