@mstar-harness/opencode 3.6.0-alpha.4 → 3.6.1
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/CHANGELOG.md +19 -0
- package/dist/mstar.js +182 -178
- package/harness-agents/architect.md +1 -3
- package/harness-agents/code-reviewer.md +1 -3
- package/harness-agents/frontend-dev.md +1 -3
- package/harness-agents/fullstack-dev-2.md +1 -3
- package/harness-agents/fullstack-dev.md +1 -3
- package/harness-agents/ops-engineer.md +1 -3
- package/harness-agents/product-manager.md +1 -3
- package/harness-agents/project-manager.md +1 -3
- package/harness-agents/prompt-engineer.md +1 -3
- package/harness-agents/qa-engineer.md +1 -3
- package/harness-agents/qc-specialist-2.md +1 -3
- package/harness-agents/qc-specialist-3.md +1 -3
- package/harness-agents/qc-specialist.md +1 -3
- package/harness-agents/writing-specialist.md +1 -3
- package/harness-skills/mstar-host/SKILL.md +1 -1
- package/harness-skills/mstar-host/references/_shared/host-role-binding-core.md +6 -6
- package/harness-skills/mstar-host/references/omp.md +12 -12
- package/harness-skills/mstar-host/references/zcode.md +45 -17
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,25 @@ The monorepo root [CHANGELOG.md](../../CHANGELOG.md) summarizes cross-surface re
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [3.6.1] - 2026-09-03
|
|
10
|
+
|
|
11
|
+
### Bundled harness skills (`harness-skills/` at publish)
|
|
12
|
+
|
|
13
|
+
- Converted all 14 repo-root agent shells (`agents/*.md`) to **single-line quoted English `description` frontmatter**. ZCode's flat agent frontmatter parser does not support `|-` block scalars — it parsed the literal string `|-` as the description and silently dropped the nested `tools`/`permission` maps, leaving plugin agent entries with a broken trigger description. Wording is unchanged (the existing English line is reused verbatim); `mode`/`tools`/`permission` are preserved for OpenCode semantics.
|
|
14
|
+
- Corrected the ZCode host contract (`mstar-host`): current ZCode **does** register Morning Star role agents (`agents/*.md`) as callable `subagent_type` values — dispatch now prefers the **bare role id** (e.g. `fullstack-dev`), keeps `general-purpose` as the universal fallback, keeps C5b prompt + skill-load binding required because the role shells are thin, and carries its own C5/C5b SSOT (the shared role-binding doc is re-scoped to Kimi-only; `zcode.md` no longer loads it). Documents the ZCode frontmatter constraint (single-line quoted English `description`; `|-` blocks and nested `tools`/`permission` are silently mangled/dropped) and that direct marketplace add works now that the repo ships `.claude-plugin/marketplace.json`.
|
|
15
|
+
|
|
16
|
+
- Version alignment with harness **3.6.1** (no OpenCode package API change).
|
|
17
|
+
|
|
18
|
+
See root [CHANGELOG.md](../../CHANGELOG.md) **3.6.1**.
|
|
19
|
+
|
|
20
|
+
## [3.6.0] - 2026-09-03
|
|
21
|
+
|
|
22
|
+
### Bundled harness skills (`harness-skills/` at publish)
|
|
23
|
+
|
|
24
|
+
- Version alignment with harness **3.6.0** (no OpenCode package API change).
|
|
25
|
+
|
|
26
|
+
See root [CHANGELOG.md](../../CHANGELOG.md) **3.6.0**.
|
|
27
|
+
|
|
9
28
|
## [3.6.0-alpha.4] - 2026-09-03
|
|
10
29
|
|
|
11
30
|
### Bundled harness skills (`harness-skills/` at publish)
|
package/dist/mstar.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __returnValue = (v) => v;
|
|
3
|
+
function __exportSetter(name, newValue) {
|
|
4
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
5
|
+
}
|
|
2
6
|
var __export = (target, all) => {
|
|
3
7
|
for (var name in all)
|
|
4
8
|
__defProp(target, name, {
|
|
5
9
|
get: all[name],
|
|
6
10
|
enumerable: true,
|
|
7
11
|
configurable: true,
|
|
8
|
-
set: (
|
|
12
|
+
set: __exportSetter.bind(all, name)
|
|
9
13
|
});
|
|
10
14
|
};
|
|
11
15
|
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
@@ -13,177 +17,177 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
|
13
17
|
// ../engine/dist/engine.js
|
|
14
18
|
var exports_engine = {};
|
|
15
19
|
__export(exports_engine, {
|
|
16
|
-
|
|
17
|
-
writeJson: () => writeJson,
|
|
18
|
-
withStatusWriteLock: () => withStatusWriteLock,
|
|
19
|
-
verifyPlanExecutionLease: () => verifyPlanExecutionLease,
|
|
20
|
-
validateWorkflowSnapshot: () => validateWorkflowSnapshot,
|
|
21
|
-
validateWorkflowEntry: () => validateWorkflowEntry,
|
|
22
|
-
validateStatusV2: () => validateStatusV2,
|
|
23
|
-
validateStatus: () => validateStatus,
|
|
24
|
-
validateSchemaYaml: () => validateSchemaYaml,
|
|
25
|
-
validateRoleMapping: () => validateRoleMapping,
|
|
26
|
-
validateRoadmap: () => validateRoadmap,
|
|
27
|
-
validateResidual: () => validateResidual,
|
|
28
|
-
validateProjectRegister: () => validateProjectRegister,
|
|
29
|
-
validatePrReviewReport: () => validatePrReviewReport,
|
|
30
|
-
validatePlanRow: () => validatePlanRow,
|
|
31
|
-
validateMstarReviewV1: () => validateMstarReviewV1,
|
|
32
|
-
validateIntegrationMergeLease: () => validateIntegrationMergeLease,
|
|
33
|
-
validateGitignore: () => validateGitignore,
|
|
34
|
-
validateFindingDoc: () => validateFindingDoc,
|
|
35
|
-
validateExecutionLease: () => validateExecutionLease,
|
|
36
|
-
validateDesignTokenFrontmatter: () => validateDesignTokenFrontmatter,
|
|
37
|
-
validateCompassFrontmatter: () => validateCompassFrontmatter,
|
|
38
|
-
validateAuditStatusBlocks: () => validateAuditStatusBlocks,
|
|
39
|
-
validateAssignmentFields: () => validateAssignmentFields,
|
|
40
|
-
unregisterWorkflow: () => unregisterWorkflow,
|
|
41
|
-
techDebtRollup: () => techDebtRollup,
|
|
42
|
-
taskReportExists: () => taskReportExists,
|
|
43
|
-
taskBrief: () => taskBrief,
|
|
44
|
-
synthesizeReview: () => synthesizeReview,
|
|
45
|
-
supplyChainChecks: () => supplyChainChecks,
|
|
46
|
-
stripFrontmatter: () => stripFrontmatter,
|
|
47
|
-
singleReviewSnapshot: () => singleReviewSnapshot,
|
|
48
|
-
setArtifactStore: () => setArtifactStore,
|
|
49
|
-
sddWorkspace: () => sddWorkspace,
|
|
50
|
-
scopeGuard: () => scopeGuard,
|
|
51
|
-
scanSecrets: () => scanSecrets,
|
|
52
|
-
scaffoldHarness: () => scaffoldHarness,
|
|
53
|
-
scaffoldAuditPlan: () => scaffoldAuditPlan,
|
|
54
|
-
sameHolderResume: () => sameHolderResume,
|
|
55
|
-
reviewPackage: () => reviewPackage,
|
|
56
|
-
resolveWorkflowDir: () => resolveWorkflowDir,
|
|
57
|
-
resolveSpecsDir: () => resolveSpecsDir,
|
|
58
|
-
resolveSkillRoot: () => resolveSkillRoot,
|
|
59
|
-
resolveSddDir: () => resolveSddDir,
|
|
60
|
-
resolveScaffoldDirs: () => resolveScaffoldDirs,
|
|
61
|
-
resolveRepoEnforcement: () => resolveRepoEnforcement,
|
|
62
|
-
resolveProjectRoot: () => resolveProjectRoot,
|
|
63
|
-
resolveProjectDir: () => resolveProjectDir,
|
|
64
|
-
resolvePrReviewTier: () => resolvePrReviewTier,
|
|
65
|
-
resolvePlanDir: () => resolvePlanDir,
|
|
66
|
-
resolveMstarcEnforcement: () => resolveMstarcEnforcement,
|
|
67
|
-
resolveKnowledgeDir: () => resolveKnowledgeDir,
|
|
68
|
-
resolveIterationDir: () => resolveIterationDir,
|
|
69
|
-
resolveHarnessDir: () => resolveHarnessDir,
|
|
70
|
-
resolveCompassEnforcement: () => resolveCompassEnforcement,
|
|
71
|
-
resolveAssetPath: () => resolveAssetPath,
|
|
72
|
-
resolveArtifactPath: () => resolveArtifactPath,
|
|
73
|
-
releaseLease: () => releaseLease,
|
|
74
|
-
registerWorkflow: () => registerWorkflow,
|
|
75
|
-
referenceExists: () => referenceExists,
|
|
76
|
-
readProgressLedger: () => readProgressLedger,
|
|
77
|
-
readJson: () => readJson,
|
|
78
|
-
readHarnessVersion: () => readHarnessVersion,
|
|
79
|
-
pushCadenceProbe: () => pushCadenceProbe,
|
|
80
|
-
promoteAuditPlans: () => promoteAuditPlans,
|
|
81
|
-
preflightChangeset: () => preflightChangeset,
|
|
82
|
-
prReviewSizing: () => prReviewSizing,
|
|
83
|
-
prReviewSeatPrompt: () => prReviewSeatPrompt,
|
|
84
|
-
prReviewReportPath: () => prReviewReportPath,
|
|
85
|
-
planReviewPost: () => planReviewPost,
|
|
86
|
-
planQualityBar: () => planQualityBar,
|
|
87
|
-
planExecutionLeaseLocations: () => planExecutionLeaseLocations,
|
|
88
|
-
pickReviewBranchName: () => pickReviewBranchName,
|
|
89
|
-
parseMstarc: () => parseMstarc,
|
|
90
|
-
parseEnforcementFlag: () => parseEnforcementFlag,
|
|
91
|
-
parseDesignFrontmatter: () => parseDesignFrontmatter,
|
|
92
|
-
parseCompassFrontmatterText: () => parseCompassFrontmatterText,
|
|
93
|
-
parseCompassFrontmatter: () => parseCompassFrontmatter,
|
|
94
|
-
parseBranchPolicyDirectOnBranch: () => parseBranchPolicyDirectOnBranch,
|
|
95
|
-
parseAssignmentFields: () => parseAssignmentFields,
|
|
96
|
-
parseAssignmentBranchForms: () => parseAssignmentBranchForms,
|
|
97
|
-
normalizeSeverity: () => normalizeSeverity,
|
|
98
|
-
migrateHarnessTree: () => migrateHarnessTree,
|
|
99
|
-
loadStoreModule: () => loadStoreModule,
|
|
100
|
-
listProjectReferenceFiles: () => listProjectReferenceFiles,
|
|
101
|
-
lintStrategySections: () => lintStrategySections,
|
|
102
|
-
lintSkillFrontmatter: () => lintSkillFrontmatter,
|
|
103
|
-
lintLoadOrder: () => lintLoadOrder,
|
|
104
|
-
lintFrontmatter: () => lintSkillFrontmatter,
|
|
105
|
-
lintFiveQuestion: () => lintFiveQuestion,
|
|
106
|
-
l2PreDispatchCheck: () => l2PreDispatchCheck,
|
|
107
|
-
l1PreDispatchCheck: () => l1PreDispatchCheck,
|
|
108
|
-
isReadOnlyAssignmentRole: () => isReadOnlyAssignmentRole,
|
|
109
|
-
implementerSessionStickyRules: () => implementerSessionStickyRules,
|
|
110
|
-
getArtifactStore: () => getArtifactStore,
|
|
111
|
-
findingsCleanupGate: () => findingsCleanupGate,
|
|
112
|
-
findTemporaryMarkers: () => findTemporaryMarkers,
|
|
113
|
-
findSimplifyMarkers: () => findSimplifyMarkers,
|
|
114
|
-
findMstarc: () => findMstarc,
|
|
115
|
-
findEphemeralCitations: () => findEphemeralCitations,
|
|
116
|
-
executionModeToN: () => executionModeToN,
|
|
117
|
-
evaluatePhaseGate: () => evaluatePhaseGate,
|
|
118
|
-
emitGitignoreSnippet: () => emitGitignoreSnippet,
|
|
119
|
-
detectHost: () => detectHost,
|
|
120
|
-
detectHarnessKind: () => detectHarnessKind,
|
|
121
|
-
createFsStore: () => createFsStore,
|
|
122
|
-
computePrTally: () => computePrTally,
|
|
123
|
-
compoundRefreshScope: () => compoundRefreshScope,
|
|
124
|
-
composeDispatchGate: () => composeDispatchGate,
|
|
125
|
-
completenessLevel: () => completenessLevel,
|
|
126
|
-
closeProjectRegisterEntry: () => closeProjectRegisterEntry,
|
|
127
|
-
claimLease: () => claimLease,
|
|
128
|
-
canSteal: () => canSteal,
|
|
129
|
-
assignmentHeaderRegion: () => assignmentHeaderRegion,
|
|
130
|
-
assertTriIdentity: () => assertTriIdentity,
|
|
131
|
-
assertSddTddTriple: () => assertSddTddTriple,
|
|
132
|
-
assertQcAlignment: () => assertQcAlignment,
|
|
133
|
-
assertPlanWritingPath: () => assertPlanWritingPath,
|
|
134
|
-
assertLightDarkParity: () => assertLightDarkParity,
|
|
135
|
-
assertIndexRows: () => assertIndexRows,
|
|
136
|
-
assertIndexRowObligations: () => assertIndexRowObligations,
|
|
137
|
-
assertFsStorePath: () => assertFsStorePath,
|
|
138
|
-
assertDefaultBranchProtected: () => assertDefaultBranchProtected,
|
|
139
|
-
assertControlVsFeaturePath: () => assertControlVsFeaturePath,
|
|
140
|
-
assertBranchAlignment: () => assertBranchAlignment,
|
|
141
|
-
assertBaseSha: () => assertBaseSha,
|
|
142
|
-
applyMigratePlan: () => applyMigratePlan,
|
|
143
|
-
applyEnforcement: () => applyEnforcement,
|
|
144
|
-
appendProjectRegisterEntries: () => appendProjectRegisterEntries,
|
|
145
|
-
antiRecursionPrecheck: () => antiRecursionPrecheck,
|
|
146
|
-
_DEFAULT_PROJECT: () => _DEFAULT_PROJECT,
|
|
147
|
-
WORKFLOW_TERMINAL_STATUSES: () => WORKFLOW_TERMINAL_STATUSES,
|
|
148
|
-
WORKFLOW_SNAPSHOT_FILE: () => WORKFLOW_SNAPSHOT_FILE,
|
|
149
|
-
WORKFLOW_LIFECYCLE_TYPES: () => WORKFLOW_LIFECYCLE_TYPES,
|
|
150
|
-
WORKFLOW_LIFECYCLE_STATUSES: () => WORKFLOW_LIFECYCLE_STATUSES,
|
|
151
|
-
SddScriptError: () => SddScriptError,
|
|
152
|
-
SHARED_FAMILIES: () => SHARED_FAMILIES,
|
|
153
|
-
SEVERITY_ORDER: () => SEVERITY_ORDER,
|
|
154
|
-
RUNTIME_HEADING_ALIASES: () => RUNTIME_HEADING_ALIASES,
|
|
155
|
-
ROLE_MAPPING: () => ROLE_MAPPING,
|
|
156
|
-
ROADMAP_STATUSES: () => ROADMAP_STATUSES,
|
|
157
|
-
REVIEW_EMOJI: () => REVIEW_EMOJI,
|
|
158
|
-
QC_REVIEWER_PARAMS: () => QC_REVIEWER_PARAMS,
|
|
159
|
-
PR_VERDICTS: () => PR_VERDICTS,
|
|
160
|
-
PROJECT_ROADMAP_FILE: () => PROJECT_ROADMAP_FILE,
|
|
161
|
-
PROJECT_REGISTER_FILE: () => PROJECT_REGISTER_FILE,
|
|
162
|
-
PROJECT_REFERENCES_DIR: () => PROJECT_REFERENCES_DIR,
|
|
163
|
-
NOTES_LEDGER_FILE: () => NOTES_LEDGER_FILE,
|
|
164
|
-
MSTARC_WORKFLOW_DIR_KEY: () => MSTARC_WORKFLOW_DIR_KEY,
|
|
165
|
-
MSTARC_SECTION: () => MSTARC_SECTION,
|
|
166
|
-
MSTARC_PROJECT_DIR_KEY: () => MSTARC_PROJECT_DIR_KEY,
|
|
167
|
-
MSTARC_HARNESS_DIR_KEY: () => MSTARC_HARNESS_DIR_KEY,
|
|
168
|
-
MSTARC_FILE: () => MSTARC_FILE,
|
|
169
|
-
MIGRATE_STATUS_FILE: () => MIGRATE_STATUS_FILE,
|
|
170
|
-
MERGE_CLASSES: () => MERGE_CLASSES,
|
|
171
|
-
KNOWLEDGE_SEVERITIES: () => KNOWLEDGE_SEVERITIES,
|
|
172
|
-
KNOWLEDGE_RESOLUTION_TYPES: () => KNOWLEDGE_RESOLUTION_TYPES,
|
|
173
|
-
KNOWLEDGE_REQUIRED_FIELDS: () => KNOWLEDGE_REQUIRED_FIELDS,
|
|
174
|
-
KNOWLEDGE_PROBLEM_TYPES: () => KNOWLEDGE_PROBLEM_TYPES,
|
|
175
|
-
KNOWLEDGE_KNOWLEDGE_PROBLEM_TYPES: () => KNOWLEDGE_KNOWLEDGE_PROBLEM_TYPES,
|
|
176
|
-
KNOWLEDGE_CATEGORY_MAP: () => KNOWLEDGE_CATEGORY_MAP,
|
|
177
|
-
KNOWLEDGE_BUG_PROBLEM_TYPES: () => KNOWLEDGE_BUG_PROBLEM_TYPES,
|
|
178
|
-
GIT_CAPTURE_MAX_BYTES: () => GIT_CAPTURE_MAX_BYTES,
|
|
179
|
-
FIVE_QUESTION_SECTIONS: () => FIVE_QUESTION_SECTIONS,
|
|
180
|
-
DEV_TRACK_PARAMS: () => DEV_TRACK_PARAMS,
|
|
181
|
-
AUDIT_RISKS: () => AUDIT_RISKS,
|
|
182
|
-
AUDIT_PRIORITIES: () => AUDIT_PRIORITIES,
|
|
183
|
-
AUDIT_EFFORTS: () => AUDIT_EFFORTS,
|
|
184
|
-
AUDIT_CONFIDENCES: () => AUDIT_CONFIDENCES,
|
|
20
|
+
ARCHIVED_STATUS_V1_FILE: () => ARCHIVED_STATUS_V1_FILE,
|
|
185
21
|
AUDIT_CATEGORIES: () => AUDIT_CATEGORIES,
|
|
186
|
-
|
|
22
|
+
AUDIT_CONFIDENCES: () => AUDIT_CONFIDENCES,
|
|
23
|
+
AUDIT_EFFORTS: () => AUDIT_EFFORTS,
|
|
24
|
+
AUDIT_PRIORITIES: () => AUDIT_PRIORITIES,
|
|
25
|
+
AUDIT_RISKS: () => AUDIT_RISKS,
|
|
26
|
+
DEV_TRACK_PARAMS: () => DEV_TRACK_PARAMS,
|
|
27
|
+
FIVE_QUESTION_SECTIONS: () => FIVE_QUESTION_SECTIONS,
|
|
28
|
+
GIT_CAPTURE_MAX_BYTES: () => GIT_CAPTURE_MAX_BYTES,
|
|
29
|
+
KNOWLEDGE_BUG_PROBLEM_TYPES: () => KNOWLEDGE_BUG_PROBLEM_TYPES,
|
|
30
|
+
KNOWLEDGE_CATEGORY_MAP: () => KNOWLEDGE_CATEGORY_MAP,
|
|
31
|
+
KNOWLEDGE_KNOWLEDGE_PROBLEM_TYPES: () => KNOWLEDGE_KNOWLEDGE_PROBLEM_TYPES,
|
|
32
|
+
KNOWLEDGE_PROBLEM_TYPES: () => KNOWLEDGE_PROBLEM_TYPES,
|
|
33
|
+
KNOWLEDGE_REQUIRED_FIELDS: () => KNOWLEDGE_REQUIRED_FIELDS,
|
|
34
|
+
KNOWLEDGE_RESOLUTION_TYPES: () => KNOWLEDGE_RESOLUTION_TYPES,
|
|
35
|
+
KNOWLEDGE_SEVERITIES: () => KNOWLEDGE_SEVERITIES,
|
|
36
|
+
MERGE_CLASSES: () => MERGE_CLASSES,
|
|
37
|
+
MIGRATE_STATUS_FILE: () => MIGRATE_STATUS_FILE,
|
|
38
|
+
MSTARC_FILE: () => MSTARC_FILE,
|
|
39
|
+
MSTARC_HARNESS_DIR_KEY: () => MSTARC_HARNESS_DIR_KEY,
|
|
40
|
+
MSTARC_PROJECT_DIR_KEY: () => MSTARC_PROJECT_DIR_KEY,
|
|
41
|
+
MSTARC_SECTION: () => MSTARC_SECTION,
|
|
42
|
+
MSTARC_WORKFLOW_DIR_KEY: () => MSTARC_WORKFLOW_DIR_KEY,
|
|
43
|
+
NOTES_LEDGER_FILE: () => NOTES_LEDGER_FILE,
|
|
44
|
+
PROJECT_REFERENCES_DIR: () => PROJECT_REFERENCES_DIR,
|
|
45
|
+
PROJECT_REGISTER_FILE: () => PROJECT_REGISTER_FILE,
|
|
46
|
+
PROJECT_ROADMAP_FILE: () => PROJECT_ROADMAP_FILE,
|
|
47
|
+
PR_VERDICTS: () => PR_VERDICTS,
|
|
48
|
+
QC_REVIEWER_PARAMS: () => QC_REVIEWER_PARAMS,
|
|
49
|
+
REVIEW_EMOJI: () => REVIEW_EMOJI,
|
|
50
|
+
ROADMAP_STATUSES: () => ROADMAP_STATUSES,
|
|
51
|
+
ROLE_MAPPING: () => ROLE_MAPPING,
|
|
52
|
+
RUNTIME_HEADING_ALIASES: () => RUNTIME_HEADING_ALIASES,
|
|
53
|
+
SEVERITY_ORDER: () => SEVERITY_ORDER,
|
|
54
|
+
SHARED_FAMILIES: () => SHARED_FAMILIES,
|
|
55
|
+
SddScriptError: () => SddScriptError,
|
|
56
|
+
WORKFLOW_LIFECYCLE_STATUSES: () => WORKFLOW_LIFECYCLE_STATUSES,
|
|
57
|
+
WORKFLOW_LIFECYCLE_TYPES: () => WORKFLOW_LIFECYCLE_TYPES,
|
|
58
|
+
WORKFLOW_SNAPSHOT_FILE: () => WORKFLOW_SNAPSHOT_FILE,
|
|
59
|
+
WORKFLOW_TERMINAL_STATUSES: () => WORKFLOW_TERMINAL_STATUSES,
|
|
60
|
+
_DEFAULT_PROJECT: () => _DEFAULT_PROJECT,
|
|
61
|
+
antiRecursionPrecheck: () => antiRecursionPrecheck,
|
|
62
|
+
appendProjectRegisterEntries: () => appendProjectRegisterEntries,
|
|
63
|
+
applyEnforcement: () => applyEnforcement,
|
|
64
|
+
applyMigratePlan: () => applyMigratePlan,
|
|
65
|
+
assertBaseSha: () => assertBaseSha,
|
|
66
|
+
assertBranchAlignment: () => assertBranchAlignment,
|
|
67
|
+
assertControlVsFeaturePath: () => assertControlVsFeaturePath,
|
|
68
|
+
assertDefaultBranchProtected: () => assertDefaultBranchProtected,
|
|
69
|
+
assertFsStorePath: () => assertFsStorePath,
|
|
70
|
+
assertIndexRowObligations: () => assertIndexRowObligations,
|
|
71
|
+
assertIndexRows: () => assertIndexRows,
|
|
72
|
+
assertLightDarkParity: () => assertLightDarkParity,
|
|
73
|
+
assertPlanWritingPath: () => assertPlanWritingPath,
|
|
74
|
+
assertQcAlignment: () => assertQcAlignment,
|
|
75
|
+
assertSddTddTriple: () => assertSddTddTriple,
|
|
76
|
+
assertTriIdentity: () => assertTriIdentity,
|
|
77
|
+
assignmentHeaderRegion: () => assignmentHeaderRegion,
|
|
78
|
+
canSteal: () => canSteal,
|
|
79
|
+
claimLease: () => claimLease,
|
|
80
|
+
closeProjectRegisterEntry: () => closeProjectRegisterEntry,
|
|
81
|
+
completenessLevel: () => completenessLevel,
|
|
82
|
+
composeDispatchGate: () => composeDispatchGate,
|
|
83
|
+
compoundRefreshScope: () => compoundRefreshScope,
|
|
84
|
+
computePrTally: () => computePrTally,
|
|
85
|
+
createFsStore: () => createFsStore,
|
|
86
|
+
detectHarnessKind: () => detectHarnessKind,
|
|
87
|
+
detectHost: () => detectHost,
|
|
88
|
+
emitGitignoreSnippet: () => emitGitignoreSnippet,
|
|
89
|
+
evaluatePhaseGate: () => evaluatePhaseGate,
|
|
90
|
+
executionModeToN: () => executionModeToN,
|
|
91
|
+
findEphemeralCitations: () => findEphemeralCitations,
|
|
92
|
+
findMstarc: () => findMstarc,
|
|
93
|
+
findSimplifyMarkers: () => findSimplifyMarkers,
|
|
94
|
+
findTemporaryMarkers: () => findTemporaryMarkers,
|
|
95
|
+
findingsCleanupGate: () => findingsCleanupGate,
|
|
96
|
+
getArtifactStore: () => getArtifactStore,
|
|
97
|
+
implementerSessionStickyRules: () => implementerSessionStickyRules,
|
|
98
|
+
isReadOnlyAssignmentRole: () => isReadOnlyAssignmentRole,
|
|
99
|
+
l1PreDispatchCheck: () => l1PreDispatchCheck,
|
|
100
|
+
l2PreDispatchCheck: () => l2PreDispatchCheck,
|
|
101
|
+
lintFiveQuestion: () => lintFiveQuestion,
|
|
102
|
+
lintFrontmatter: () => lintSkillFrontmatter,
|
|
103
|
+
lintLoadOrder: () => lintLoadOrder,
|
|
104
|
+
lintSkillFrontmatter: () => lintSkillFrontmatter,
|
|
105
|
+
lintStrategySections: () => lintStrategySections,
|
|
106
|
+
listProjectReferenceFiles: () => listProjectReferenceFiles,
|
|
107
|
+
loadStoreModule: () => loadStoreModule,
|
|
108
|
+
migrateHarnessTree: () => migrateHarnessTree,
|
|
109
|
+
normalizeSeverity: () => normalizeSeverity,
|
|
110
|
+
parseAssignmentBranchForms: () => parseAssignmentBranchForms,
|
|
111
|
+
parseAssignmentFields: () => parseAssignmentFields,
|
|
112
|
+
parseBranchPolicyDirectOnBranch: () => parseBranchPolicyDirectOnBranch,
|
|
113
|
+
parseCompassFrontmatter: () => parseCompassFrontmatter,
|
|
114
|
+
parseCompassFrontmatterText: () => parseCompassFrontmatterText,
|
|
115
|
+
parseDesignFrontmatter: () => parseDesignFrontmatter,
|
|
116
|
+
parseEnforcementFlag: () => parseEnforcementFlag,
|
|
117
|
+
parseMstarc: () => parseMstarc,
|
|
118
|
+
pickReviewBranchName: () => pickReviewBranchName,
|
|
119
|
+
planExecutionLeaseLocations: () => planExecutionLeaseLocations,
|
|
120
|
+
planQualityBar: () => planQualityBar,
|
|
121
|
+
planReviewPost: () => planReviewPost,
|
|
122
|
+
prReviewReportPath: () => prReviewReportPath,
|
|
123
|
+
prReviewSeatPrompt: () => prReviewSeatPrompt,
|
|
124
|
+
prReviewSizing: () => prReviewSizing,
|
|
125
|
+
preflightChangeset: () => preflightChangeset,
|
|
126
|
+
promoteAuditPlans: () => promoteAuditPlans,
|
|
127
|
+
pushCadenceProbe: () => pushCadenceProbe,
|
|
128
|
+
readHarnessVersion: () => readHarnessVersion,
|
|
129
|
+
readJson: () => readJson,
|
|
130
|
+
readProgressLedger: () => readProgressLedger,
|
|
131
|
+
referenceExists: () => referenceExists,
|
|
132
|
+
registerWorkflow: () => registerWorkflow,
|
|
133
|
+
releaseLease: () => releaseLease,
|
|
134
|
+
resolveArtifactPath: () => resolveArtifactPath,
|
|
135
|
+
resolveAssetPath: () => resolveAssetPath,
|
|
136
|
+
resolveCompassEnforcement: () => resolveCompassEnforcement,
|
|
137
|
+
resolveHarnessDir: () => resolveHarnessDir,
|
|
138
|
+
resolveIterationDir: () => resolveIterationDir,
|
|
139
|
+
resolveKnowledgeDir: () => resolveKnowledgeDir,
|
|
140
|
+
resolveMstarcEnforcement: () => resolveMstarcEnforcement,
|
|
141
|
+
resolvePlanDir: () => resolvePlanDir,
|
|
142
|
+
resolvePrReviewTier: () => resolvePrReviewTier,
|
|
143
|
+
resolveProjectDir: () => resolveProjectDir,
|
|
144
|
+
resolveProjectRoot: () => resolveProjectRoot,
|
|
145
|
+
resolveRepoEnforcement: () => resolveRepoEnforcement,
|
|
146
|
+
resolveScaffoldDirs: () => resolveScaffoldDirs,
|
|
147
|
+
resolveSddDir: () => resolveSddDir,
|
|
148
|
+
resolveSkillRoot: () => resolveSkillRoot,
|
|
149
|
+
resolveSpecsDir: () => resolveSpecsDir,
|
|
150
|
+
resolveWorkflowDir: () => resolveWorkflowDir,
|
|
151
|
+
reviewPackage: () => reviewPackage,
|
|
152
|
+
sameHolderResume: () => sameHolderResume,
|
|
153
|
+
scaffoldAuditPlan: () => scaffoldAuditPlan,
|
|
154
|
+
scaffoldHarness: () => scaffoldHarness,
|
|
155
|
+
scanSecrets: () => scanSecrets,
|
|
156
|
+
scopeGuard: () => scopeGuard,
|
|
157
|
+
sddWorkspace: () => sddWorkspace,
|
|
158
|
+
setArtifactStore: () => setArtifactStore,
|
|
159
|
+
singleReviewSnapshot: () => singleReviewSnapshot,
|
|
160
|
+
stripFrontmatter: () => stripFrontmatter,
|
|
161
|
+
supplyChainChecks: () => supplyChainChecks,
|
|
162
|
+
synthesizeReview: () => synthesizeReview,
|
|
163
|
+
taskBrief: () => taskBrief,
|
|
164
|
+
taskReportExists: () => taskReportExists,
|
|
165
|
+
techDebtRollup: () => techDebtRollup,
|
|
166
|
+
unregisterWorkflow: () => unregisterWorkflow,
|
|
167
|
+
validateAssignmentFields: () => validateAssignmentFields,
|
|
168
|
+
validateAuditStatusBlocks: () => validateAuditStatusBlocks,
|
|
169
|
+
validateCompassFrontmatter: () => validateCompassFrontmatter,
|
|
170
|
+
validateDesignTokenFrontmatter: () => validateDesignTokenFrontmatter,
|
|
171
|
+
validateExecutionLease: () => validateExecutionLease,
|
|
172
|
+
validateFindingDoc: () => validateFindingDoc,
|
|
173
|
+
validateGitignore: () => validateGitignore,
|
|
174
|
+
validateIntegrationMergeLease: () => validateIntegrationMergeLease,
|
|
175
|
+
validateMstarReviewV1: () => validateMstarReviewV1,
|
|
176
|
+
validatePlanRow: () => validatePlanRow,
|
|
177
|
+
validatePrReviewReport: () => validatePrReviewReport,
|
|
178
|
+
validateProjectRegister: () => validateProjectRegister,
|
|
179
|
+
validateResidual: () => validateResidual,
|
|
180
|
+
validateRoadmap: () => validateRoadmap,
|
|
181
|
+
validateRoleMapping: () => validateRoleMapping,
|
|
182
|
+
validateSchemaYaml: () => validateSchemaYaml,
|
|
183
|
+
validateStatus: () => validateStatus,
|
|
184
|
+
validateStatusV2: () => validateStatusV2,
|
|
185
|
+
validateWorkflowEntry: () => validateWorkflowEntry,
|
|
186
|
+
validateWorkflowSnapshot: () => validateWorkflowSnapshot,
|
|
187
|
+
verifyPlanExecutionLease: () => verifyPlanExecutionLease,
|
|
188
|
+
withStatusWriteLock: () => withStatusWriteLock,
|
|
189
|
+
writeJson: () => writeJson,
|
|
190
|
+
writeWorkflowSnapshot: () => writeWorkflowSnapshot
|
|
187
191
|
});
|
|
188
192
|
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
189
193
|
import { randomUUID } from "node:crypto";
|
|
@@ -6710,12 +6714,12 @@ var mstar_default = {
|
|
|
6710
6714
|
server: MorningStarHarnessPlugin
|
|
6711
6715
|
};
|
|
6712
6716
|
export {
|
|
6713
|
-
|
|
6714
|
-
validateDispatchAssignment,
|
|
6715
|
-
newValidatorsLoader,
|
|
6716
|
-
loadNewValidators,
|
|
6717
|
-
loadDirResolvers,
|
|
6718
|
-
dirResolversLoader,
|
|
6717
|
+
MorningStarHarnessPlugin,
|
|
6719
6718
|
mstar_default as default,
|
|
6720
|
-
|
|
6719
|
+
dirResolversLoader,
|
|
6720
|
+
loadDirResolvers,
|
|
6721
|
+
loadNewValidators,
|
|
6722
|
+
newValidatorsLoader,
|
|
6723
|
+
validateDispatchAssignment,
|
|
6724
|
+
validateStatusWrite
|
|
6721
6725
|
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: architect
|
|
3
|
-
description:
|
|
4
|
-
技术架构师 - 系统设计、技术决策与技术向文档编写(架构说明、ADR、接口契约等)。
|
|
5
|
-
Architect - system design, technical decisions, and technical documentation (architecture notes, ADRs, interface contracts).
|
|
3
|
+
description: "Architect - system design, technical decisions, and technical documentation (architecture notes, ADRs, interface contracts)."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-reviewer
|
|
3
|
-
description:
|
|
4
|
-
代码审查员 - SDD 任务级审查(L2)+ 代码库审计执行(audit)。只读席位:不实现、不修代码、不占 QC 席。
|
|
5
|
-
Code Reviewer - SDD per-task review (L2) + codebase audit execution (audit). Read-only seat: does not implement, fix, or occupy a QC seat.
|
|
3
|
+
description: "Code Reviewer - SDD per-task review (L2) + codebase audit execution (audit). Read-only seat: does not implement, fix, or occupy a QC seat."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-dev
|
|
3
|
-
description:
|
|
4
|
-
前端开发工程师 - 页面/组件/交互/a11y/前端性能。全栈功能里默认前端主责(与 `@fullstack-dev` 分轨);纯 UI 任务首选本角色。
|
|
5
|
-
Frontend Developer - pages/components/interactions/accessibility/frontend performance. This is the default frontend owner in fullstack work (split with `@fullstack-dev`) and the preferred role for pure UI tasks.
|
|
3
|
+
description: "Frontend Developer - pages/components/interactions/accessibility/frontend performance. This is the default frontend owner in fullstack work (split with `@fullstack-dev`) and the preferred role for pure UI tasks."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fullstack-dev-2
|
|
3
|
-
description:
|
|
4
|
-
全栈开发工程师 - 与 `@fullstack-dev` 并行的第二实现轨(独立模块/API/页面岛)。PM 在 tasks 可并行或加速时指派;须写明模块边界与分支,勿当作闲置备用。
|
|
5
|
-
Fullstack Developer (Track 2) - the second implementation track parallel to `@fullstack-dev` (independent modules/APIs/page islands). PM should assign this role when tasks can run in parallel or when acceleration is needed, with explicit module boundaries and branch ownership.
|
|
3
|
+
description: "Fullstack Developer (Track 2) - the second implementation track parallel to `@fullstack-dev` (independent modules/APIs/page islands). PM should assign this role when tasks can run in parallel or when acceleration is needed, with explicit module boundaries and branch ownership."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fullstack-dev
|
|
3
|
-
description:
|
|
4
|
-
全栈开发工程师 - 后端主导的全栈实现(API/业务/数据层)。UI 重或新页面多时由 PM 拆给 `@frontend-dev`;第二并行实现轨用 `@fullstack-dev-2`。Hotfix/单流小改可一人完成。
|
|
5
|
-
Fullstack Developer - backend-led fullstack implementation (API/business/data). PM should split UI-heavy or new-page work to `@frontend-dev`, and use `@fullstack-dev-2` for the second parallel track. One developer can handle hotfixes or small single-stream updates.
|
|
3
|
+
description: "Fullstack Developer - backend-led fullstack implementation (API/business/data). PM should split UI-heavy or new-page work to `@frontend-dev`, and use `@fullstack-dev-2` for the second parallel track. One developer can handle hotfixes or small single-stream updates."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ops-engineer
|
|
3
|
-
description:
|
|
4
|
-
运维工程师 - 部署、监控和基础设施。
|
|
5
|
-
Ops Engineer - deployment, monitoring, and infrastructure operations, including CI/CD and observability.
|
|
3
|
+
description: "Ops Engineer - deployment, monitoring, and infrastructure operations, including CI/CD and observability."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: product-manager
|
|
3
|
-
description:
|
|
4
|
-
产品经理 - 需求分析、产品规划、市场/用户研究与产品向文档编写。
|
|
5
|
-
Product Manager - requirements analysis, product planning, market/user research, and product-facing documentation.
|
|
3
|
+
description: "Product Manager - requirements analysis, product planning, market/user research, and product-facing documentation."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project-manager
|
|
3
|
-
description:
|
|
4
|
-
项目经理 - 协调开发团队,管理项目进度。
|
|
5
|
-
Project Manager - coordinate the team, track progress, and orchestrate execution across roles.
|
|
3
|
+
description: "Project Manager - coordinate the team, track progress, and orchestrate execution across roles."
|
|
6
4
|
mode: primary
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prompt-engineer
|
|
3
|
-
description:
|
|
4
|
-
提示词工程师 - 设计与优化 Agent 提示词与技能。
|
|
5
|
-
Prompt Engineer - design and optimize prompts and skills for agents, including refactoring and debugging prompt systems.
|
|
3
|
+
description: "Prompt Engineer - design and optimize prompts and skills for agents, including refactoring and debugging prompt systems."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qa-engineer
|
|
3
|
-
description:
|
|
4
|
-
测试工程师 - L4 验收席(分级派发):DoD 映射、residual 验证、report-only 调查。
|
|
5
|
-
QA Engineer - tiered L4 acceptance (DoD mapping, residual verify, report-only); dispatched when PM sets QA gate mandatory.
|
|
3
|
+
description: "QA Engineer - tiered L4 acceptance (DoD mapping, residual verify, report-only); dispatched when PM sets QA gate mandatory."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qc-specialist-2
|
|
3
|
-
description:
|
|
4
|
-
质量控制专家(Reviewer #2)- 代码审查(diff / 逻辑 / 安全正确性)。非测试执行席。
|
|
5
|
-
Quality Control Specialist (Reviewer #2) - code review (diff, logic, security/correctness). Not a test runner.
|
|
3
|
+
description: "Quality Control Specialist (Reviewer #2) - code review (diff, logic, security/correctness). Not a test runner."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qc-specialist-3
|
|
3
|
-
description:
|
|
4
|
-
质量控制专家(Reviewer #3)- 代码审查(diff / 逻辑 / 性能可靠性)。非测试执行席。
|
|
5
|
-
Quality Control Specialist (Reviewer #3) - code review (diff, logic, performance/reliability). Not a test runner.
|
|
3
|
+
description: "Quality Control Specialist (Reviewer #3) - code review (diff, logic, performance/reliability). Not a test runner."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qc-specialist
|
|
3
|
-
description:
|
|
4
|
-
质量控制专家(Reviewer #1)- 代码审查(diff / 逻辑 / 架构可维护性)。非测试执行席。
|
|
5
|
-
Quality Control Specialist (Reviewer #1) - code review (diff, logic, maintainability). Not a test runner.
|
|
3
|
+
description: "Quality Control Specialist (Reviewer #1) - code review (diff, logic, maintainability). Not a test runner."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: writing-specialist
|
|
3
|
-
description:
|
|
4
|
-
写作专家 - 文档写作、小说写作、文案写作与脚本写作。
|
|
5
|
-
Writing Specialist - documentation, fiction, copywriting, and script writing.
|
|
3
|
+
description: "Writing Specialist - documentation, fiction, copywriting, and script writing."
|
|
6
4
|
mode: subagent
|
|
7
5
|
tools:
|
|
8
6
|
write: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mstar-host
|
|
3
|
-
description: Morning Star host adapter
|
|
3
|
+
description: Morning Star host adapter for OpenCode, Cursor, Codex, Kimi, ZCode, omp, and dsh. Use after mstar-harness-core whenever host entry, clarify, dispatch, plan mode, or tool UX differs by platform - per-host subagent invoke, plan-mode bridge, parallel dispatch, and skill/command loading. Auto-detect the host from session tools, then Read references/<host>.md. Always load after mstar-harness-core.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Morning Star Host Adapter
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
# Host role-binding core (C5/C5b)
|
|
2
2
|
|
|
3
|
-
Shared role-binding contract for **Kimi
|
|
3
|
+
Shared role-binding contract for **Kimi** — the host where Morning Star role ids are **never** valid invoke types, so picking `subagent_type` alone cannot carry Assignment IDENTITY + skill load.
|
|
4
4
|
|
|
5
|
-
Other hosts follow their own `references/<host>.md` and do **not** use this file for agent selection. Read this file only when the active host reference is Kimi
|
|
5
|
+
Other hosts follow their own `references/<host>.md` and do **not** use this file for agent selection. Read this file only when the active host reference is Kimi.
|
|
6
6
|
|
|
7
|
-
## C5 — invoke type selection (Kimi
|
|
7
|
+
## C5 — invoke type selection (Kimi)
|
|
8
8
|
|
|
9
9
|
| Host | Invoke-type selection (C5) | Prompt role binding (C5b) |
|
|
10
10
|
|------|----------------------------|---------------------------|
|
|
11
|
-
| **Kimi
|
|
11
|
+
| **Kimi** | Built-in types only (`coder` / `explore` / `plan`, …). Morning Star role ids are **never** valid invoke types. | **Required** |
|
|
12
12
|
|
|
13
13
|
- **Never invent** agent / subagent names. The **live tool schema** (plus the active host reference C5 table) is SSOT every session.
|
|
14
14
|
- Morning Star role ids (`product-manager`, `fullstack-dev`, `qc-specialist`, …) are **not** valid invoke types — map via the host reference table (`coder` / `explore` / `plan`, …), then rely on C5b.
|
|
15
15
|
|
|
16
16
|
## C5b — role binding in prompt (required)
|
|
17
17
|
|
|
18
|
-
Every dispatch on Kimi
|
|
18
|
+
Every dispatch on Kimi **must** carry the played Morning Star role in the **Assignment** and in the **invoke prompt**:
|
|
19
19
|
|
|
20
20
|
1. **`Execute as: <role-id>`** in Assignment (harness routing SSOT).
|
|
21
21
|
2. **`Act as <role-id>`** (or equivalent) at the top of the invoke prompt.
|
|
@@ -48,4 +48,4 @@ Load: `mstar-harness-core` → `mstar-host` → `<host>.md` → `mstar-roles`
|
|
|
48
48
|
<task body>
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
The active host reference shows the matching invoke shape (same turn) — e.g. Kimi
|
|
51
|
+
The active host reference shows the matching invoke shape (same turn) — e.g. Kimi `Agent` with `subagent_type: "coder"` plus this C5b body.
|
|
@@ -8,17 +8,17 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
|
|
|
8
8
|
|
|
9
9
|
## omp-only context
|
|
10
10
|
|
|
11
|
-
- Plugin markers: **`.omp-plugin/plugin.json`** (Morning Star host marker) and **`.claude-plugin/plugin.json`** (Claude-compatible marketplace discovery).
|
|
12
|
-
- Runtime skills: repo `skills/` discovered after `omp plugin install` / `omp plugin link` (OMP extension-package sub-discovery) or Claude marketplace install.
|
|
13
|
-
- Plugin commands:
|
|
14
|
-
- Plugin agents:
|
|
11
|
+
- Plugin markers: **`.omp-plugin/plugin.json`** (Morning Star host marker) and **`.claude-plugin/plugin.json`** (Claude-compatible marketplace discovery). The **npm package** (`@mstar-harness/omp`) ships its own package-root `plugin.json` + `skills/` + `commands/` + `agents/` + `hooks/` + `tools/` mirrors; the **maintainer link path** is now `<repo>/packages/omp` (built) — hooks/tools moved into the package (2026-09-03), so linking the repo root provides skills/commands/agents only, with NO runtime gates.
|
|
12
|
+
- Runtime skills: package `skills/` (or repo `skills/` on the link path) discovered after `omp plugin install` / `omp plugin link` (OMP extension-package sub-discovery) or Claude marketplace install.
|
|
13
|
+
- Plugin commands: `commands/<name>.md` → slash **`/<name>`** (e.g. `/iteration-start`). omp uses the **filename** as the command name (no `morning-star-harness:` prefix).
|
|
14
|
+
- Plugin agents: **`agents/*.md`** are discovered into the live **`task.agent`** list after install/link + reload. Morning Star **subagent** role ids (`product-manager`, `architect`, `fullstack-dev`, `qc-specialist`, …) are valid `agent` values **when listed** — see C5. `project-manager` is **`mode: primary`** (orchestration seat), not a typical `task` dispatch target.
|
|
15
15
|
- **No Kimi-style `sessionStart.skill`** — enter PM manually via **`/skill:pm`** (or the `pm` skill), then **Read next** → `mstar-harness-core` → `project-manager.md`.
|
|
16
16
|
- Install (user-scoped, recommended):
|
|
17
|
-
- `omp plugin install
|
|
17
|
+
- `omp plugin install @mstar-harness/omp`
|
|
18
18
|
- or CLI: `npx @mstar-harness/cli init --target omp --scope global` (links `~/.mstar/harness`)
|
|
19
|
-
- Project scope: `omp plugin install
|
|
20
|
-
- Local maintainers: `omp plugin link /path/to/mstar-harness` (or the CLI-managed `~/.mstar/harness` checkout).
|
|
21
|
-
- After install/link: `omp plugin list` should show package **`morning-star`** (root `package.json` name). Reload / new session to pick up skills, commands, and agents.
|
|
19
|
+
- Project scope: `omp plugin install @mstar-harness/omp --scope project` or `npx @mstar-harness/cli init --target omp --scope project`.
|
|
20
|
+
- Local maintainers: `omp plugin link /path/to/mstar-harness/packages/omp` (or the CLI-managed `~/.mstar/harness/packages/omp` checkout) — the linked package tree resolves the engine via the workspace member, so run `bun install && bun run engine:build && bun run --cwd packages/omp build` in the checkout first. Linking the repo root no longer provides the runtime gates (hooks/tools moved into the package); the npm install stays the primary path.
|
|
21
|
+
- After install/link: `omp plugin list` should show package **`@mstar-harness/omp`** (npm) or **`morning-star`** (root `package.json` name, link path). Reload / new session to pick up skills, commands, and agents.
|
|
22
22
|
|
|
23
23
|
## Skill loading
|
|
24
24
|
|
|
@@ -106,7 +106,7 @@ Single-task shorthand may exist depending on host version — always match the l
|
|
|
106
106
|
|
|
107
107
|
### Role binding in prompt (C5b — required)
|
|
108
108
|
|
|
109
|
-
omp C5/C5b SSOT is **this file
|
|
109
|
+
omp C5/C5b SSOT is **this file**. Even when `agent` already matches the role id, still bind Morning Star process in the Assignment / `task` body (agent shell ≠ full role prompt; skill load is not automatic).
|
|
110
110
|
|
|
111
111
|
Required in every role dispatch:
|
|
112
112
|
|
|
@@ -210,10 +210,10 @@ Cannot emit required **N** → **`Blocked`**.
|
|
|
210
210
|
|
|
211
211
|
## In-process engine binding (omp ≥ 17.2.11)
|
|
212
212
|
|
|
213
|
-
- **Surfaces** (
|
|
213
|
+
- **Surfaces** (npm package root = plugin root; sources live in `packages/omp/src/`): `hooks/pre/mstar-gates.js` — one `tool_call` pre-hook that returns `{ block: true, reason }` (structured refusal the model sees as the tool error) or `undefined` (pass); `tools/mstar_{status_validate,dispatch_validate,lease_verify,path_resolve,iteration_gate,worktree_check}.js` — six model-callable validator tools (engine validators only, Zod params via `pi.zod`). omp discovers these by convention from the installed package root (`<pkg>/hooks/pre/` any file, `<pkg>/tools/` direct `*.js` files — the sub-directory scan only accepts `tools/<name>/index.ts`), not from `dist/`.
|
|
214
214
|
|- **Enforcement semantics**: block ONLY under `Enforcement: hard`. Both gates read the repo `.mstarc` `[config] enforcement`, else the harness compass frontmatter (`enforcement: hard`, active/locked iterations only); the dispatch gate ALSO honors each Assignment's own header flag (`assignmentHeaderRegion` — a body example never hardens). A hard repo setting therefore hardens flag-less dispatches (Gate 1 / dsh `resolveDispatchHard` parity). Soft-mode dispatch violations are warn-logged through the extension logger (never blocked); soft status-write violations stay a silent pass. Rollback = unset the flag (or `.mstarc` `soft`). Never global.
|
|
215
215
|
- **Anti-recursion scope (issue #156)**: the engine's `antiRecursionPrecheck` is **caller-scoped** — it compares the DISPATCHING agent's own role against the new Assignment's `Execute as`. omp's `tool_call` event carries no caller identity and the task entry `agent` is the spawn TARGET, which equals `Execute as` on every compliant dispatch (C5 above) — so Gate 2 does NOT run the precheck on omp (the pre-#156 wiring hard-blocked every compliant hard-mode dispatch on `self-type`, or on `empty-binding` when `agent` was omitted). The NEVER red line stays prompt-level on this host (`mstar-dispatch-gates`); dsh enforces it in-engine via Config `dispatchBinding`.
|
|
216
|
-
- **Engine dependency**: the
|
|
216
|
+
- **Engine dependency**: the npm package **bundles the engine inline** into every hook/tool bundle at build time — zero runtime package resolution, so module link can never fail on a missing package (the 2026-09-03 hotfix for the bare-import load failure). The maintainer `omp plugin link` path (now `<repo>/packages/omp`) still resolves the engine via the workspace member — run `bun install && bun run engine:build && bun run --cwd packages/omp build` in the checkout first (the member's `dist/` and the package's generated mirrors are gitignored).
|
|
217
217
|
- **Graceful degradation (explicit)**: module load failure → `mstar_*` tools skipped, hook absent (no blocking), `commands/*.md` shell-out fallback intact. Caveat: a partial failure is SILENT — no in-band signal that gates are off; verify with `omp -p '/extensions'`.
|
|
218
218
|
|- **`MSTAR_HARNESS_DIR` override / `.mstarc`**: the hook and tools discover `{HARNESS_DIR}` via `resolveHarnessDir` — a repo `.mstarc` `[config] harness_dir` (gitignored local config) first, then the probe `.mstar/` → `.agents/` → `.plans/`/`plans/`. Repos using a non-standard harness root can declare it in `.mstarc` or MUST export `MSTAR_HARNESS_DIR` (absolute path) in the omp session env — without either the status gate does not cover those roots and tools like `mstar_path_resolve` / `mstar_lease_verify` error out (parity with the opencode binding).
|
|
219
219
|
- **Edit-path limitation**: the status gate validates the on-disk file for `edit` events (pre-edit state) — a corrupting edit is caught by the next write or `mstar_status_validate` (known v1 limitation, parity with opencode).
|
|
@@ -234,7 +234,7 @@ Cannot emit required **N** → **`Blocked`**.
|
|
|
234
234
|
|
|
235
235
|
## Gotchas
|
|
236
236
|
|
|
237
|
-
- Installed npm
|
|
237
|
+
- Installed npm plugin package name is **`@mstar-harness/omp`** (git/link path: root **`morning-star`**); Morning Star display name remains **morning-star-harness**.
|
|
238
238
|
- Marketplace (Claude) installs and `omp plugin install` are different discovery providers — prefer one install path per machine to avoid duplicate skill listings.
|
|
239
239
|
- Session plan UI / todos are not durable SSOT unless mirrored to `{HARNESS_DIR}`.
|
|
240
240
|
- After install/link, **reload / new session** so `agents/*.md` appear in the live `task.agent` list — stale sessions may only show host generics and wrongly push you to `agent: "task"`.
|
|
@@ -11,9 +11,9 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
|
|
|
11
11
|
- Plugin manifest: **`.zcode-plugin/plugin.json`** (plugin root is the **repo root**; paths stay `./skills/`, `./commands/`, `./agents/`).
|
|
12
12
|
- Runtime skills: repo `skills/` mounted by the plugin (`"skills": "./skills/"`).
|
|
13
13
|
- Plugin commands: repo `commands/` → `/morning-star-harness:<name>` (e.g. `/morning-star-harness:iteration-start`).
|
|
14
|
-
- Plugin agents: repo `agents/*.md` (role frontmatter `name` + `description
|
|
14
|
+
- Plugin agents: repo `agents/*.md` (role frontmatter `name` + **single-line quoted English `description`** — ZCode's flat frontmatter parser cannot read `|-` block scalars and silently drops nested `tools`/`permission` maps). ZCode registers them as callable `subagent_type`s in both bare (`fullstack-dev`) and plugin-qualified (`morning-star-harness:fullstack-dev`) forms (see C5).
|
|
15
15
|
- **No `sessionStart.skill`** (ZCode has no Kimi-style session auto-load) — enter PM manually via **`/morning-star-harness:pm`** or the **`pm`** skill, then **Read next** → `mstar-harness-core` → `project-manager.md`.
|
|
16
|
-
- Install (user-scoped, recommended): `npx @mstar-harness/cli init --target zcode --scope global`, then in ZCode **Settings → Plugin Management → Discover** install **morning-star-harness** from the **mstar-local** marketplace
|
|
16
|
+
- Install (user-scoped, recommended): `npx @mstar-harness/cli init --target zcode --scope global`, then in ZCode **Settings → Plugin Management → Discover** install **morning-star-harness** from the **mstar-local** marketplace. Direct-add also works without the CLI: the repo ships `.claude-plugin/marketplace.json` (root `marketplace.json` fallback), which ZCode discovers when refreshing a `github`-source marketplace.
|
|
17
17
|
- Plugins are **user-scoped** (all projects); managed copy lives under `~/.zcode/cli/plugins/` after install.
|
|
18
18
|
- Project `.agents/skills/` symlinks are **not** required when using the plugin — commands and skills come from the plugin mount.
|
|
19
19
|
|
|
@@ -31,7 +31,7 @@ Use skill names in prompts and references. Avoid absolute local paths unless mai
|
|
|
31
31
|
|
|
32
32
|
| ZCode tool | Harness use |
|
|
33
33
|
|------------|-------------|
|
|
34
|
-
| **Agent** | Primary dispatch — delegate one subagent task (`subagent_type`:
|
|
34
|
+
| **Agent** | Primary dispatch — delegate one subagent task (`subagent_type`: bare Morning Star role id, e.g. `fullstack-dev`; `general-purpose` fallback; `Explore` read-only) |
|
|
35
35
|
| **AskUserQuestion** | Structured clarify (1–4 questions, 2–4 options each); prefer over free-form when choices are known |
|
|
36
36
|
| **EnterPlanMode** / **ExitPlanMode** | Plan mode entry/approval → **`zcode-plan-mode-bridge.md`** |
|
|
37
37
|
| **TodoWrite** | Session UX only; mirror to SSOT plan / workflow snapshot (`{WORKFLOW_DIR}/<id>/snapshot.json`) when durable |
|
|
@@ -40,34 +40,62 @@ Use skill names in prompts and references. Avoid absolute local paths unless mai
|
|
|
40
40
|
| **Edit** / **Write** | Edits |
|
|
41
41
|
| **Glob** / **Grep** | Search (prefer over shell find/grep) |
|
|
42
42
|
| **WebSearch** / **WebFetch** | External docs / facts |
|
|
43
|
+
| **Skill** | Invoke bundled skills (`/morning-star-harness:pm`, `mstar-harness-core`, …) |
|
|
43
44
|
| **TaskOutput** / **TaskStop** | Long-running task management when present |
|
|
44
45
|
|
|
45
46
|
OpenCode-style `question`/`task`, Cursor **Task**, and Kimi **AgentSwarm** are **not** ZCode tools — do not assume them.
|
|
46
47
|
|
|
47
|
-
## Role agents (C5
|
|
48
|
+
## Role agents (C5)
|
|
48
49
|
|
|
49
|
-
ZCode
|
|
50
|
+
ZCode registers the plugin's Morning Star agents (`agents/*.md`) as callable **`subagent_type`** values alongside the built-in profiles, in both **bare role id** (`fullstack-dev`) and **plugin-qualified** (`morning-star-harness:fullstack-dev`) forms. Prefer the **bare role id** (verified on ZCode 0.16.5: the bare form loads the role shell body; the qualified form can silently fall back to the default prompt):
|
|
50
51
|
|
|
51
52
|
| `subagent_type` | ZCode profile | Harness mapping |
|
|
52
53
|
|-----------------|---------------|-----------------|
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
54
|
+
| `<role-id>` (bare, e.g. `fullstack-dev`, `qc-specialist`) | Registered plugin agent | **Preferred** for the matching Morning Star role |
|
|
55
|
+
| `Explore` | Built-in read-only exploration | Orientation, codebase survey, Prepare explore passes |
|
|
56
|
+
| `general-purpose` | Built-in general profile | **Universal fallback** when a role id is not exposed |
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
Role shells are thin — each body only states the role identity and points at the `mstar-roles` skill — so C5b prompt binding stays **required** on every dispatch regardless of `subagent_type`.
|
|
57
59
|
|
|
58
60
|
### Role binding in prompt (C5b — required)
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
ZCode C5/C5b SSOT is **this file** — do **not** load `_shared/host-role-binding-core.md` (that file is Kimi only). Role shells are thin (identity + skill pointer, not the full role prompt), so every role dispatch must carry:
|
|
63
|
+
|
|
64
|
+
1. **`Execute as: <role-id>`** in Assignment (harness routing SSOT).
|
|
65
|
+
2. **`Act as <role-id>`** (or equivalent) at the top of the invoke prompt.
|
|
66
|
+
3. **Skill load list** — instruct the subagent to read `mstar-roles` → `references/<role-id>.md` (or shared reference + parameters) and topic skills per that reference.
|
|
67
|
+
4. **`subagent_type`** — bare Morning Star role id per C5; `general-purpose` fallback.
|
|
68
|
+
|
|
69
|
+
Paste-only Assignment **without** an invoke call is **not** dispatch. Anti-recursion NEVER: leaf executors are already `Execute as` — no recursive invoke of the same role; Assignment wins (`Delegation: forbidden` unless stated). **Never** multiple implementer invokes in one message for the same plan (SDD serial → **`parallel-dispatch.md`** § SDD implement).
|
|
70
|
+
|
|
71
|
+
ZCode invoke shape (same turn):
|
|
61
72
|
|
|
62
73
|
```text
|
|
63
74
|
Agent(
|
|
64
|
-
subagent_type: "
|
|
75
|
+
subagent_type: "fullstack-dev",
|
|
65
76
|
description: "<short task label>",
|
|
66
|
-
prompt: "<full Assignment body including Act as + skill load>"
|
|
77
|
+
prompt: "<full Assignment body including Execute as + Act as + skill load>"
|
|
67
78
|
)
|
|
68
79
|
```
|
|
69
80
|
|
|
70
|
-
|
|
81
|
+
Assignment / prompt template:
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
## Assignment
|
|
85
|
+
|
|
86
|
+
**Execute as**: fullstack-dev
|
|
87
|
+
**Delegation**: forbidden
|
|
88
|
+
**Working branch**: feat/example
|
|
89
|
+
**Plan Path**: .mstar/plans/20260717-example.md
|
|
90
|
+
|
|
91
|
+
**IDENTITY:** You ARE `fullstack-dev`. Act as `fullstack-dev` for this task.
|
|
92
|
+
|
|
93
|
+
Load: `mstar-harness-core` → `mstar-host` → `zcode.md` → `mstar-roles` → `references/fullstack-dev-shared.md` → topic skills per that reference.
|
|
94
|
+
|
|
95
|
+
<task body>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Role id not exposed (older ZCode) → `subagent_type: "general-purpose"` with the same body. For **`Explore`** orientation:
|
|
71
99
|
|
|
72
100
|
```text
|
|
73
101
|
Agent(subagent_type: "Explore", description: "...", prompt: "... Act as explore-only orientation; Execute as: n/a ...")
|
|
@@ -75,24 +103,24 @@ Agent(subagent_type: "Explore", description: "...", prompt: "... Act as explore-
|
|
|
75
103
|
|
|
76
104
|
## PM dispatch (`Agent`)
|
|
77
105
|
|
|
78
|
-
Harness **dispatch** on ZCode = **one or more `Agent` tool calls** with correct **`subagent_type`** and role-bound prompts (C5b
|
|
106
|
+
Harness **dispatch** on ZCode = **one or more `Agent` tool calls** with correct **`subagent_type`** and role-bound prompts (C5b — this file). N-parallel / 1-Assignment-1-invoke / paste-only mechanics → **`parallel-dispatch.md`**.
|
|
79
107
|
|
|
80
108
|
| Harness | ZCode |
|
|
81
109
|
|---------|-------|
|
|
82
110
|
| `Execute as: <role-id>` | Role id in Assignment + **Act as** + skill load in **Agent** prompt (C5b) |
|
|
83
|
-
| `subagent_type` for invoke |
|
|
111
|
+
| `subagent_type` for invoke | bare role id (e.g. `fullstack-dev`, `qc-specialist`); `general-purpose` fallback; `Explore` for read-only |
|
|
84
112
|
| Parallel batch **N** | **N `Agent`** calls in **one assistant message** |
|
|
85
113
|
|
|
86
114
|
### QC default
|
|
87
115
|
|
|
88
|
-
- **`Execution mode: sdd`**: **N=3** `Agent` calls (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`) — each prompt **Act as** the respective QC role, all `subagent_type: "general-purpose
|
|
116
|
+
- **`Execution mode: sdd`**: **N=3** `Agent` calls (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`) — each prompt **Act as** the respective QC role, all via bare `subagent_type: "qc-specialist"` / `"qc-specialist-2"` / `"qc-specialist-3"` (`general-purpose` fallback; N rules → `parallel-dispatch.md`).
|
|
89
117
|
- **`inline`**: **N=1** per `parallel-dispatch.md`.
|
|
90
118
|
|
|
91
119
|
Cannot emit required **N** → **`Blocked`**.
|
|
92
120
|
|
|
93
121
|
### SDD implement (serial)
|
|
94
122
|
|
|
95
|
-
- **`Execution mode: sdd`**: one implementer **`Agent`** per task id; task reviewer = new **`Agent`** with **Act as `code-reviewer`** (ZCode L2 review; not qc-specialist*), always
|
|
123
|
+
- **`Execution mode: sdd`**: one implementer **`Agent`** per task id (bare role id per C5, `general-purpose` fallback); task reviewer = new **`Agent`** with **Act as `code-reviewer`** (`subagent_type: "code-reviewer"`, `general-purpose` fallback; ZCode L2 review; not qc-specialist*), always with C5b prompt binding — no sticky resume unless host adds it later. Serial rule → **`parallel-dispatch.md`** § SDD implement.
|
|
96
124
|
- **Never** multiple implementer Agents in one message for the same plan.
|
|
97
125
|
|
|
98
126
|
## Clarify
|
|
@@ -125,5 +153,5 @@ Cannot emit required **N** → **`Blocked`**.
|
|
|
125
153
|
|
|
126
154
|
- Plugin install materializes source under `~/.zcode/cli/plugins/` — edit the harness checkout + reinstall to pick up harness changes.
|
|
127
155
|
- Session todos (`TodoWrite`) are not durable SSOT unless mirrored to `{HARNESS_DIR}`.
|
|
128
|
-
-
|
|
156
|
+
- Morning Star roles **are** registered as ZCode subagent types from `agents/*.md` — but the shells are thin, so role binding is **still always** prompt + skill load (C5b); prefer bare role ids, the qualified form can fall back to the default prompt.
|
|
129
157
|
- ZCode has no `sessionStart.skill`; new sessions do **not** auto-load PM — invoke `/morning-star-harness:pm` or `/skill:pm` manually.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mstar-harness/opencode",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "Morning Star harness OpenCode plugin — skills bootstrap + engine-backed runtime hooks (status lint, dispatch validation, Enforcement: hard gates).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|