Merge pull request 'feat(org-import): add spawning:false field to skip workspace + descendants' (#135) from feat/org-import-spawning-false into main
Some checks are pending
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
publish-workspace-server-image / build-and-push (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (push) Successful in 21s
CodeQL / Analyze (${{ matrix.language }}) (go) (push) Successful in 23s
CodeQL / Analyze (${{ matrix.language }}) (python) (push) Successful in 21s
CI / Detect changes (push) Successful in 28s
Block internal-flavored paths / Block forbidden paths (push) Successful in 35s
Handlers Postgres Integration / detect-changes (push) Successful in 29s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 33s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 31s
E2E API Smoke Test / detect-changes (push) Successful in 1m5s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 1m1s
Harness Replays / detect-changes (push) Successful in 1m4s
CI / Shellcheck (E2E scripts) (push) Successful in 11s
CI / Canvas (Next.js) (push) Successful in 17s
CI / Canvas Deploy Reminder (push) Has been skipped
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 1m15s
CI / Python Lint & Test (push) Successful in 1m56s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 2m27s
Harness Replays / Harness Replays (push) Successful in 3m0s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 5m46s
CI / Platform (Go) (push) Successful in 8m23s
Some checks are pending
Handlers Postgres Integration / Handlers Postgres Integration (push) Blocked by required conditions
publish-workspace-server-image / build-and-push (push) Waiting to run
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (push) Successful in 21s
CodeQL / Analyze (${{ matrix.language }}) (go) (push) Successful in 23s
CodeQL / Analyze (${{ matrix.language }}) (python) (push) Successful in 21s
CI / Detect changes (push) Successful in 28s
Block internal-flavored paths / Block forbidden paths (push) Successful in 35s
Handlers Postgres Integration / detect-changes (push) Successful in 29s
E2E Staging Canvas (Playwright) / detect-changes (push) Successful in 33s
Secret scan / Scan diff for credential-shaped strings (push) Successful in 31s
E2E API Smoke Test / detect-changes (push) Successful in 1m5s
Runtime PR-Built Compatibility / detect-changes (push) Successful in 1m1s
Harness Replays / detect-changes (push) Successful in 1m4s
CI / Shellcheck (E2E scripts) (push) Successful in 11s
CI / Canvas (Next.js) (push) Successful in 17s
CI / Canvas Deploy Reminder (push) Has been skipped
Runtime PR-Built Compatibility / PR-built wheel + import smoke (push) Successful in 1m15s
CI / Python Lint & Test (push) Successful in 1m56s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (push) Successful in 2m27s
Harness Replays / Harness Replays (push) Successful in 3m0s
E2E API Smoke Test / E2E API Smoke Test (push) Successful in 5m46s
CI / Platform (Go) (push) Successful in 8m23s
This commit is contained in:
commit
9b5e89bb42
@ -422,6 +422,16 @@ type OrgWorkspace struct {
|
|||||||
Tier int `yaml:"tier" json:"tier"`
|
Tier int `yaml:"tier" json:"tier"`
|
||||||
Template string `yaml:"template" json:"template"`
|
Template string `yaml:"template" json:"template"`
|
||||||
FilesDir string `yaml:"files_dir" json:"files_dir"`
|
FilesDir string `yaml:"files_dir" json:"files_dir"`
|
||||||
|
// Spawning gates whether this workspace (AND its descendants) gets
|
||||||
|
// provisioned during /org/import. Pointer so we can distinguish
|
||||||
|
// "explicitly set to false" from "unset" (default = spawn). Use case:
|
||||||
|
// the dev-tree org template declares the full team structure but a
|
||||||
|
// developer's local machine only has RAM for a subset; setting
|
||||||
|
// spawning: false on a leaf or a sub-tree root skips that branch
|
||||||
|
// entirely without editing the canonical template structure.
|
||||||
|
// Counted in countWorkspaces same as actual; subtree-skip happens
|
||||||
|
// at provision time in createWorkspaceTree.
|
||||||
|
Spawning *bool `yaml:"spawning,omitempty" json:"spawning,omitempty"`
|
||||||
// SystemPrompt is an inline override. Normally each role's system-prompt.md
|
// SystemPrompt is an inline override. Normally each role's system-prompt.md
|
||||||
// lives at `<files_dir>/system-prompt.md` and is copied via the files_dir
|
// lives at `<files_dir>/system-prompt.md` and is copied via the files_dir
|
||||||
// template-copy step; inline overrides that path for ad-hoc workspaces.
|
// template-copy step; inline overrides that path for ad-hoc workspaces.
|
||||||
|
|||||||
@ -42,6 +42,20 @@ import (
|
|||||||
// straight into the parent's child-coordinate space without doing a
|
// straight into the parent's child-coordinate space without doing a
|
||||||
// canvas-wide absolute-position walk.
|
// canvas-wide absolute-position walk.
|
||||||
func (h *OrgHandler) createWorkspaceTree(ws OrgWorkspace, parentID *string, absX, absY, relX, relY float64, defaults OrgDefaults, orgBaseDir string, results *[]map[string]interface{}, provisionSem chan struct{}) error {
|
func (h *OrgHandler) createWorkspaceTree(ws OrgWorkspace, parentID *string, absX, absY, relX, relY float64, defaults OrgDefaults, orgBaseDir string, results *[]map[string]interface{}, provisionSem chan struct{}) error {
|
||||||
|
// spawning: false guard — skip this workspace AND all descendants.
|
||||||
|
// Pointer-typed so we distinguish "explicitly false" from "unset"
|
||||||
|
// (unset = default to spawn). The guard sits BEFORE any side effect
|
||||||
|
// (no DB row, no docker provision, no children recursion) so a
|
||||||
|
// false-spawning subtree is genuinely a no-op except for the log line.
|
||||||
|
// Use case: dev-tree org template ships the full role taxonomy but a
|
||||||
|
// developer's machine only has RAM for a subset; a per-workspace
|
||||||
|
// `spawning: false` lets them narrow without editing the parent
|
||||||
|
// template's structure.
|
||||||
|
if ws.Spawning != nil && !*ws.Spawning {
|
||||||
|
log.Printf("Org import: skipping workspace %q (spawning=false; %d descendant workspace(s) in subtree also skipped)", ws.Name, countWorkspaces(ws.Children))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Apply defaults
|
// Apply defaults
|
||||||
runtime := ws.Runtime
|
runtime := ws.Runtime
|
||||||
if runtime == "" {
|
if runtime == "" {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user