feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: add StepFun Global Step Plan support - #927

Merged
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support
Jul 13, 2026
Merged

feat: add StepFun Global Step Plan support#927
Astro-Han merged 4 commits into
mainfrom
feat/stepfun-step-plan-global-support

Conversation

@Astro-Han

Copy link
Copy Markdown
Contributor

Summary

  • Add StepFun Step Plan (Global) as the independent persisted provider stepfun-ai-step-plan.
  • Wire its official Global endpoint, snapshot model catalog, reasoning efforts, deterministic tool-call path, credentials, persistence, CLI/headless, and Desktop catalog/brand seams.
  • Reuse the existing byte-identical StepFun SVG, shared ProviderAssetMask, and third-party notice without vendoring another asset.

Why

Issue #860 Phase 4 needs a Global Step Plan slice that remains distinct from the China Step Plan and both direct API providers. The Global plan uses its own .ai account, key namespace, and https://api.stepfun.ai/step_plan/v1 endpoint. Its public contract does not promise a /models endpoint, so this change uses an explicit snapshot allowlist instead of guessing discovery parity with another StepFun product.

Refs #860.

Scope

This PR adds only stepfun-ai-step-plan. It does not change stepfun-step-plan, stepfun-ai, stepfun, any other provider, or Phase 7 behavior. The allowlist is exactly step-3.7-flash, step-3.5-flash-2603, and step-3.5-flash; Global Step Plan is the unique ready/catalog order 32 after Vercel order 31.

Verification

  • npm run test:scripts — 58/58 passed.
  • npm --workspace @maka/core test — 906/906 passed.
  • npm --workspace @maka/runtime test — 1,516 passed, 0 failed, 7 skipped.
  • npm --workspace @maka/storage test — 255/255 passed.
  • npm --workspace @maka/headless test — 886/886 passed.
  • npm --workspace maka-agent test — 326/326 passed.
  • npm --workspace @maka/desktop test — 2,471/2,471 passed.
  • Targeted stable-ID, model-effort, provider-options, and deterministic two-stage tool-call tests — 4/4 passed.
  • npm run typecheck passed for every workspace.
  • npm --workspace @maka/desktop run build:renderer passed; the third-party-notice checker confirmed a byte-identical public notice.
  • npm run check:stale and git diff --check origin/main...HEAD passed.
  • git merge-tree --write-tree HEAD origin/main passed against test(cu): extend real AX provider evidence #924 with no conflict.
  • Existing StepFun SVG matches origin/main and its recorded provenance at SHA-256 f46fbd1eee00a3dc7874395484bcc3e25a803e9eb4b79f07b7eec377a1e2f25c; neither the SVG nor THIRD_PARTY_LICENSES.txt is in this diff.
  • Named reviewer audited the final SHA and reported 0 findings.

No real-provider smoke was run: no authorized StepFun Global Step Plan credential was available, and the subscription is documented for interactive coding/agent use. The runtime behavior is covered by a local deterministic two-request mock server that asserts Bearer auth, the exact /step_plan/v1/chat/completions path, reasoning wire data, tool execution, and tool-result round-trip without logging secrets or raw responses.

Static screenshots are not applicable: this adds a provider entry while deliberately reusing the already-shipped StepFun mark and existing catalog/detail components. Desktop provider E2E coverage and the shared-brand governance contract are the substitute UI evidence.

Impact

Users can configure and persist a StepFun Global Step Plan connection across Desktop, CLI, storage, and headless integrations. Headless callers may use the independent STEPFUN_AI_STEP_PLAN_API_KEY, STEPFUN_AI_STEP_PLAN_API_KEY_FILE, and STEPFUN_AI_STEP_PLAN_BASE_URL variables. There is no migration: existing provider IDs and connections remain unchanged. Release notes should mention the new provider option; no separate documentation change is required because the catalog exposes the official signup and model facts.

Reviewer notes

Please focus on the independent provider boundary, the honest snapshot fallback, and the shared-brand route. The four commits are independently revertible by intent: registry/facts, runtime/thinking, host/persistence, and Desktop brand wiring.

Ready for review

  • Verification is complete and the results above are current
  • Impact, compatibility, migration, documentation, and release-note needs are addressed
  • User-visible UI/UX changes include visual evidence, or Verification explains why it is not applicable

@Astro-Han
Astro-Han merged commit 73f4b08 into mainJul 13, 2026
3 checks passed
@Astro-Han
Astro-Han deleted the feat/stepfun-step-plan-global-support branch July 13, 2026 20:48
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Astro-Han