Pear updates

This commit is contained in:
Raven Scott
2026-05-26 18:02:37 -04:00
parent 1e3d89e810
commit 59593e43f6
9 changed files with 324 additions and 330 deletions
+43 -45
View File
@@ -96,15 +96,17 @@ function bareOsEmitRaw(ctx, chunk) {
* See docs/design/ctx-pear-surface-and-bare-audit-plan.md for the full plan and design. * See docs/design/ctx-pear-surface-and-bare-audit-plan.md for the full plan and design.
*/ */
async function run(ctx, argv = []) {
function printHelp(argv0 = 'pear') { function printHelp(argv0 = 'pear') {
console.log(`${argv0} — Pear development surface for Bare OS ctx.console.log(`${argv0} — Pear development surface for Bare OS
Usage: Usage:
${argv0} help ${argv0} help
${argv0} info ${argv0} info
${argv0} list ${argv0} list
${argv0} stage [dir] (stub — will use ctx.pear.pearBuild) ${argv0} stage [dir]
${argv0} build [dir] (alias for stage in v1) ${argv0} build [dir]
${argv0} init [dir]
The ctx.pear surface exposes selected Pear and Bare build/bundling packages The ctx.pear surface exposes selected Pear and Bare build/bundling packages
(pear-build, pear-bundle, bare-bundle-compile, etc.) when BARE_OS_BARE_MODULES (pear-build, pear-bundle, bare-bundle-compile, etc.) when BARE_OS_BARE_MODULES
@@ -116,54 +118,54 @@ the P2P App Store.
Pear apps you create here are natural citizens of the P2P App Store: Pear apps you create here are natural citizens of the P2P App Store:
- Stage your app with Pear tooling - Stage your app with Pear tooling
- Publish it via `appstore` (or directly as a pear:// package) - Publish it via appstore (or directly as a pear:// package)
- Other users can discover and run it - Other users can discover and run it
Use the `pear-dev` agent skill together with the `appstore` skill for Use the pear-dev agent skill together with the appstore skill for
autonomous "build Pear app → publish to my store" workflows. autonomous "build Pear app → publish to my store" workflows.
`) `)
} }
async function cmdInfo(ctx) { async function cmdInfo() {
console.log('pear — Pear development tools (ctx.pear surface)') ctx.console.log('pear — Pear development tools (ctx.pear surface)')
console.log('Bare OS version of selected Pear runtime packages.') ctx.console.log('Bare OS version of selected Pear runtime packages.')
console.log('') ctx.console.log('')
if (ctx.pear && typeof ctx.pear === 'object') { if (ctx.pear && typeof ctx.pear === 'object') {
const keys = Object.keys(ctx.pear).sort() const keys = Object.keys(ctx.pear).sort()
console.log(`Exposed on ctx.pear (${keys.length} packages):`) ctx.console.log(`Exposed on ctx.pear (${keys.length} packages):`)
for (const k of keys) { for (const k of keys) {
const val = ctx.pear[k] const val = ctx.pear[k]
const type = typeof val const type = typeof val
console.log(` ${k.padEnd(20)} ${type}`) ctx.console.log(` ${k.padEnd(20)} ${type}`)
} }
} else { } else {
console.log('ctx.pear is not currently populated (BARE_OS_BARE_MODULES may be disabled).') ctx.console.log('ctx.pear is not currently populated (BARE_OS_BARE_MODULES may be disabled).')
} }
console.log('') ctx.console.log('')
console.log('Run "pear list" for the same view.') ctx.console.log('Run "pear list" for the same view.')
} }
async function cmdList(ctx) { async function cmdList() {
if (!ctx.pear || typeof ctx.pear !== 'object') { if (!ctx.pear || typeof ctx.pear !== 'object') {
console.log('ctx.pear is not available in this environment.') ctx.console.log('ctx.pear is not available in this environment.')
return return
} }
const keys = Object.keys(ctx.pear).sort() const keys = Object.keys(ctx.pear).sort()
if (keys.length === 0) { if (keys.length === 0) {
console.log('No packages currently exposed on ctx.pear.') ctx.console.log('No packages currently exposed on ctx.pear.')
return return
} }
console.log(`ctx.pear — ${keys.length} package(s) available:\n`) ctx.console.log(`ctx.pear — ${keys.length} package(s) available:\n`)
for (const k of keys) { for (const k of keys) {
console.log(` ${k}`) ctx.console.log(` ${k}`)
} }
} }
async function cmdInit(ctx, targetDir = '.') { async function cmdInit(targetDir = '.') {
const name = 'my-pear-app' const name = 'my-pear-app'
const dir = targetDir === '.' ? `${(ctx.env?.HOME || '/home/guest')}/pear-projects/${name}` : targetDir const dir = targetDir === '.' ? `${(ctx.env?.HOME || '/home/guest')}/pear-projects/${name}` : targetDir
console.log(`pear init: creating minimal Pear app skeleton at ${dir} (stub implementation)`) ctx.console.log(`pear init: creating minimal Pear app skeleton at ${dir}`)
try { try {
await ctx.vfs.mkdir(dir, { recursive: true }) await ctx.vfs.mkdir(dir, { recursive: true })
@@ -179,53 +181,49 @@ async function cmdInit(ctx, targetDir = '.') {
} }
await ctx.vfs.writeFile(`${dir}/package.json`, ctx.b4a.from(JSON.stringify(packageJson, null, 2))) await ctx.vfs.writeFile(`${dir}/package.json`, ctx.b4a.from(JSON.stringify(packageJson, null, 2)))
await ctx.vfs.writeFile(`${dir}/index.js`, ctx.b4a.from('console.log("Hello from my Pear app!");\n')) await ctx.vfs.writeFile(`${dir}/index.js`, ctx.b4a.from('console.log("Hello from my Pear app!");\n'))
console.log('Created basic package.json + index.js') ctx.console.log('Created basic package.json + index.js')
console.log('Next (when fully wired): run "pear stage ' + dir + '" using ctx.pear.pearBuild') ctx.console.log(`Next: run "pear stage ${dir}" (uses ctx.pear.pearBuild when available)`)
} catch (err) { } catch (err) {
console.error('Failed to init:', err?.message || err) ctx.console.error('Failed to init:', err?.message || err)
} }
} }
// The coreutils runner executes this file body with `ctx` in scope. const sub = (argv[1] || 'help').toLowerCase()
// We run the command logic directly at the bottom (consistent with other commands like appstore).
const sub = (typeof argv !== 'undefined' && argv[1] ? argv[1] : 'help').toLowerCase()
switch (sub) { switch (sub) {
case 'help': case 'help':
case '--help': case '--help':
case '-h': case '-h':
printHelp(typeof argv !== 'undefined' ? argv[0] : 'pear') printHelp(argv[0] || 'pear')
break break
case 'info': case 'info':
await cmdInfo(ctx) await cmdInfo()
break break
case 'list': case 'list':
case 'ls': case 'ls':
await cmdList(ctx) await cmdList()
break break
case 'stage': case 'stage':
case 'build': case 'build':
const target = (typeof argv !== 'undefined' ? argv[2] : null) || '.' const target = argv[2] || '.'
if (ctx.pear && ctx.pear.pearBuild) { if (ctx.pear && ctx.pear.pearBuild) {
console.log(`Attempting stage of ${target} using ctx.pear.pearBuild (early integration)...`) ctx.console.log(`Attempting stage of ${target} using ctx.pear.pearBuild...`)
try { ctx.console.log('ctx.pear.pearBuild is available. Full pipeline implementation in progress.')
console.log('ctx.pear.pearBuild is available. Full stage pipeline landing in upcoming plan items.') ctx.console.log('Exposed build-related keys:', Object.keys(ctx.pear).filter(k =>
console.log('Exposed Pear build surface:', Object.keys(ctx.pear).filter(k => k.toLowerCase().includes('build') || k.toLowerCase().includes('bundle'))) k.toLowerCase().includes('build') || k.toLowerCase().includes('bundle')
} catch (e) { ))
console.error('Stage attempt error:', e?.message || e)
}
} else { } else {
console.log('pear stage / build: advanced integration in progress (ctx.pear.pearBuild available).') ctx.console.log('pear stage / build: ctx.pear.pearBuild not yet available in this environment.')
console.log('Current exposed packages on ctx.pear:') ctx.console.log('Current exposed packages on ctx.pear:')
await cmdList(ctx) await cmdList()
} }
break break
case 'init': case 'init':
await cmdInit(ctx, (typeof argv !== 'undefined' ? argv[2] : null)) await cmdInit(argv[2])
break break
default: default:
console.error(`Unknown subcommand: ${sub}`) ctx.console.error(`Unknown subcommand: ${sub}`)
printHelp(typeof argv !== 'undefined' ? argv[0] : 'pear') printHelp(argv[0] || 'pear')
break break
} }
}
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"schema": 2, "schema": 2,
"profileId": "bare-os-posix-like", "profileId": "bare-os-posix-like",
"generatedAt": "2026-05-26T21:57:58.462Z", "generatedAt": "2026-05-26T22:02:23.960Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.", "note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [ "commandIndex": [
{ {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"schema": 1, "schema": 1,
"atMs": 1779832678462, "atMs": 1779832943959,
"commands": [ "commands": [
"agent", "agent",
"appctl", "appctl",
File diff suppressed because one or more lines are too long
+43 -45
View File
@@ -7,15 +7,17 @@
* See docs/design/ctx-pear-surface-and-bare-audit-plan.md for the full plan and design. * See docs/design/ctx-pear-surface-and-bare-audit-plan.md for the full plan and design.
*/ */
async function run(ctx, argv = []) {
function printHelp(argv0 = 'pear') { function printHelp(argv0 = 'pear') {
console.log(`${argv0} — Pear development surface for Bare OS ctx.console.log(`${argv0} — Pear development surface for Bare OS
Usage: Usage:
${argv0} help ${argv0} help
${argv0} info ${argv0} info
${argv0} list ${argv0} list
${argv0} stage [dir] (stub — will use ctx.pear.pearBuild) ${argv0} stage [dir]
${argv0} build [dir] (alias for stage in v1) ${argv0} build [dir]
${argv0} init [dir]
The ctx.pear surface exposes selected Pear and Bare build/bundling packages The ctx.pear surface exposes selected Pear and Bare build/bundling packages
(pear-build, pear-bundle, bare-bundle-compile, etc.) when BARE_OS_BARE_MODULES (pear-build, pear-bundle, bare-bundle-compile, etc.) when BARE_OS_BARE_MODULES
@@ -27,54 +29,54 @@ the P2P App Store.
Pear apps you create here are natural citizens of the P2P App Store: Pear apps you create here are natural citizens of the P2P App Store:
- Stage your app with Pear tooling - Stage your app with Pear tooling
- Publish it via `appstore` (or directly as a pear:// package) - Publish it via appstore (or directly as a pear:// package)
- Other users can discover and run it - Other users can discover and run it
Use the `pear-dev` agent skill together with the `appstore` skill for Use the pear-dev agent skill together with the appstore skill for
autonomous "build Pear app → publish to my store" workflows. autonomous "build Pear app → publish to my store" workflows.
`) `)
} }
async function cmdInfo(ctx) { async function cmdInfo() {
console.log('pear — Pear development tools (ctx.pear surface)') ctx.console.log('pear — Pear development tools (ctx.pear surface)')
console.log('Bare OS version of selected Pear runtime packages.') ctx.console.log('Bare OS version of selected Pear runtime packages.')
console.log('') ctx.console.log('')
if (ctx.pear && typeof ctx.pear === 'object') { if (ctx.pear && typeof ctx.pear === 'object') {
const keys = Object.keys(ctx.pear).sort() const keys = Object.keys(ctx.pear).sort()
console.log(`Exposed on ctx.pear (${keys.length} packages):`) ctx.console.log(`Exposed on ctx.pear (${keys.length} packages):`)
for (const k of keys) { for (const k of keys) {
const val = ctx.pear[k] const val = ctx.pear[k]
const type = typeof val const type = typeof val
console.log(` ${k.padEnd(20)} ${type}`) ctx.console.log(` ${k.padEnd(20)} ${type}`)
} }
} else { } else {
console.log('ctx.pear is not currently populated (BARE_OS_BARE_MODULES may be disabled).') ctx.console.log('ctx.pear is not currently populated (BARE_OS_BARE_MODULES may be disabled).')
} }
console.log('') ctx.console.log('')
console.log('Run "pear list" for the same view.') ctx.console.log('Run "pear list" for the same view.')
} }
async function cmdList(ctx) { async function cmdList() {
if (!ctx.pear || typeof ctx.pear !== 'object') { if (!ctx.pear || typeof ctx.pear !== 'object') {
console.log('ctx.pear is not available in this environment.') ctx.console.log('ctx.pear is not available in this environment.')
return return
} }
const keys = Object.keys(ctx.pear).sort() const keys = Object.keys(ctx.pear).sort()
if (keys.length === 0) { if (keys.length === 0) {
console.log('No packages currently exposed on ctx.pear.') ctx.console.log('No packages currently exposed on ctx.pear.')
return return
} }
console.log(`ctx.pear — ${keys.length} package(s) available:\n`) ctx.console.log(`ctx.pear — ${keys.length} package(s) available:\n`)
for (const k of keys) { for (const k of keys) {
console.log(` ${k}`) ctx.console.log(` ${k}`)
} }
} }
async function cmdInit(ctx, targetDir = '.') { async function cmdInit(targetDir = '.') {
const name = 'my-pear-app' const name = 'my-pear-app'
const dir = targetDir === '.' ? `${(ctx.env?.HOME || '/home/guest')}/pear-projects/${name}` : targetDir const dir = targetDir === '.' ? `${(ctx.env?.HOME || '/home/guest')}/pear-projects/${name}` : targetDir
console.log(`pear init: creating minimal Pear app skeleton at ${dir} (stub implementation)`) ctx.console.log(`pear init: creating minimal Pear app skeleton at ${dir}`)
try { try {
await ctx.vfs.mkdir(dir, { recursive: true }) await ctx.vfs.mkdir(dir, { recursive: true })
@@ -90,53 +92,49 @@ async function cmdInit(ctx, targetDir = '.') {
} }
await ctx.vfs.writeFile(`${dir}/package.json`, ctx.b4a.from(JSON.stringify(packageJson, null, 2))) await ctx.vfs.writeFile(`${dir}/package.json`, ctx.b4a.from(JSON.stringify(packageJson, null, 2)))
await ctx.vfs.writeFile(`${dir}/index.js`, ctx.b4a.from('console.log("Hello from my Pear app!");\n')) await ctx.vfs.writeFile(`${dir}/index.js`, ctx.b4a.from('console.log("Hello from my Pear app!");\n'))
console.log('Created basic package.json + index.js') ctx.console.log('Created basic package.json + index.js')
console.log('Next (when fully wired): run "pear stage ' + dir + '" using ctx.pear.pearBuild') ctx.console.log(`Next: run "pear stage ${dir}" (uses ctx.pear.pearBuild when available)`)
} catch (err) { } catch (err) {
console.error('Failed to init:', err?.message || err) ctx.console.error('Failed to init:', err?.message || err)
} }
} }
// The coreutils runner executes this file body with `ctx` in scope. const sub = (argv[1] || 'help').toLowerCase()
// We run the command logic directly at the bottom (consistent with other commands like appstore).
const sub = (typeof argv !== 'undefined' && argv[1] ? argv[1] : 'help').toLowerCase()
switch (sub) { switch (sub) {
case 'help': case 'help':
case '--help': case '--help':
case '-h': case '-h':
printHelp(typeof argv !== 'undefined' ? argv[0] : 'pear') printHelp(argv[0] || 'pear')
break break
case 'info': case 'info':
await cmdInfo(ctx) await cmdInfo()
break break
case 'list': case 'list':
case 'ls': case 'ls':
await cmdList(ctx) await cmdList()
break break
case 'stage': case 'stage':
case 'build': case 'build':
const target = (typeof argv !== 'undefined' ? argv[2] : null) || '.' const target = argv[2] || '.'
if (ctx.pear && ctx.pear.pearBuild) { if (ctx.pear && ctx.pear.pearBuild) {
console.log(`Attempting stage of ${target} using ctx.pear.pearBuild (early integration)...`) ctx.console.log(`Attempting stage of ${target} using ctx.pear.pearBuild...`)
try { ctx.console.log('ctx.pear.pearBuild is available. Full pipeline implementation in progress.')
console.log('ctx.pear.pearBuild is available. Full stage pipeline landing in upcoming plan items.') ctx.console.log('Exposed build-related keys:', Object.keys(ctx.pear).filter(k =>
console.log('Exposed Pear build surface:', Object.keys(ctx.pear).filter(k => k.toLowerCase().includes('build') || k.toLowerCase().includes('bundle'))) k.toLowerCase().includes('build') || k.toLowerCase().includes('bundle')
} catch (e) { ))
console.error('Stage attempt error:', e?.message || e)
}
} else { } else {
console.log('pear stage / build: advanced integration in progress (ctx.pear.pearBuild available).') ctx.console.log('pear stage / build: ctx.pear.pearBuild not yet available in this environment.')
console.log('Current exposed packages on ctx.pear:') ctx.console.log('Current exposed packages on ctx.pear:')
await cmdList(ctx) await cmdList()
} }
break break
case 'init': case 'init':
await cmdInit(ctx, (typeof argv !== 'undefined' ? argv[2] : null)) await cmdInit(argv[2])
break break
default: default:
console.error(`Unknown subcommand: ${sub}`) ctx.console.error(`Unknown subcommand: ${sub}`)
printHelp(typeof argv !== 'undefined' ? argv[0] : 'pear') printHelp(argv[0] || 'pear')
break break
} }
}
+43 -45
View File
@@ -96,15 +96,17 @@ function bareOsEmitRaw(ctx, chunk) {
* See docs/design/ctx-pear-surface-and-bare-audit-plan.md for the full plan and design. * See docs/design/ctx-pear-surface-and-bare-audit-plan.md for the full plan and design.
*/ */
async function run(ctx, argv = []) {
function printHelp(argv0 = 'pear') { function printHelp(argv0 = 'pear') {
console.log(`${argv0} — Pear development surface for Bare OS ctx.console.log(`${argv0} — Pear development surface for Bare OS
Usage: Usage:
${argv0} help ${argv0} help
${argv0} info ${argv0} info
${argv0} list ${argv0} list
${argv0} stage [dir] (stub — will use ctx.pear.pearBuild) ${argv0} stage [dir]
${argv0} build [dir] (alias for stage in v1) ${argv0} build [dir]
${argv0} init [dir]
The ctx.pear surface exposes selected Pear and Bare build/bundling packages The ctx.pear surface exposes selected Pear and Bare build/bundling packages
(pear-build, pear-bundle, bare-bundle-compile, etc.) when BARE_OS_BARE_MODULES (pear-build, pear-bundle, bare-bundle-compile, etc.) when BARE_OS_BARE_MODULES
@@ -116,54 +118,54 @@ the P2P App Store.
Pear apps you create here are natural citizens of the P2P App Store: Pear apps you create here are natural citizens of the P2P App Store:
- Stage your app with Pear tooling - Stage your app with Pear tooling
- Publish it via `appstore` (or directly as a pear:// package) - Publish it via appstore (or directly as a pear:// package)
- Other users can discover and run it - Other users can discover and run it
Use the `pear-dev` agent skill together with the `appstore` skill for Use the pear-dev agent skill together with the appstore skill for
autonomous "build Pear app → publish to my store" workflows. autonomous "build Pear app → publish to my store" workflows.
`) `)
} }
async function cmdInfo(ctx) { async function cmdInfo() {
console.log('pear — Pear development tools (ctx.pear surface)') ctx.console.log('pear — Pear development tools (ctx.pear surface)')
console.log('Bare OS version of selected Pear runtime packages.') ctx.console.log('Bare OS version of selected Pear runtime packages.')
console.log('') ctx.console.log('')
if (ctx.pear && typeof ctx.pear === 'object') { if (ctx.pear && typeof ctx.pear === 'object') {
const keys = Object.keys(ctx.pear).sort() const keys = Object.keys(ctx.pear).sort()
console.log(`Exposed on ctx.pear (${keys.length} packages):`) ctx.console.log(`Exposed on ctx.pear (${keys.length} packages):`)
for (const k of keys) { for (const k of keys) {
const val = ctx.pear[k] const val = ctx.pear[k]
const type = typeof val const type = typeof val
console.log(` ${k.padEnd(20)} ${type}`) ctx.console.log(` ${k.padEnd(20)} ${type}`)
} }
} else { } else {
console.log('ctx.pear is not currently populated (BARE_OS_BARE_MODULES may be disabled).') ctx.console.log('ctx.pear is not currently populated (BARE_OS_BARE_MODULES may be disabled).')
} }
console.log('') ctx.console.log('')
console.log('Run "pear list" for the same view.') ctx.console.log('Run "pear list" for the same view.')
} }
async function cmdList(ctx) { async function cmdList() {
if (!ctx.pear || typeof ctx.pear !== 'object') { if (!ctx.pear || typeof ctx.pear !== 'object') {
console.log('ctx.pear is not available in this environment.') ctx.console.log('ctx.pear is not available in this environment.')
return return
} }
const keys = Object.keys(ctx.pear).sort() const keys = Object.keys(ctx.pear).sort()
if (keys.length === 0) { if (keys.length === 0) {
console.log('No packages currently exposed on ctx.pear.') ctx.console.log('No packages currently exposed on ctx.pear.')
return return
} }
console.log(`ctx.pear — ${keys.length} package(s) available:\n`) ctx.console.log(`ctx.pear — ${keys.length} package(s) available:\n`)
for (const k of keys) { for (const k of keys) {
console.log(` ${k}`) ctx.console.log(` ${k}`)
} }
} }
async function cmdInit(ctx, targetDir = '.') { async function cmdInit(targetDir = '.') {
const name = 'my-pear-app' const name = 'my-pear-app'
const dir = targetDir === '.' ? `${(ctx.env?.HOME || '/home/guest')}/pear-projects/${name}` : targetDir const dir = targetDir === '.' ? `${(ctx.env?.HOME || '/home/guest')}/pear-projects/${name}` : targetDir
console.log(`pear init: creating minimal Pear app skeleton at ${dir} (stub implementation)`) ctx.console.log(`pear init: creating minimal Pear app skeleton at ${dir}`)
try { try {
await ctx.vfs.mkdir(dir, { recursive: true }) await ctx.vfs.mkdir(dir, { recursive: true })
@@ -179,53 +181,49 @@ async function cmdInit(ctx, targetDir = '.') {
} }
await ctx.vfs.writeFile(`${dir}/package.json`, ctx.b4a.from(JSON.stringify(packageJson, null, 2))) await ctx.vfs.writeFile(`${dir}/package.json`, ctx.b4a.from(JSON.stringify(packageJson, null, 2)))
await ctx.vfs.writeFile(`${dir}/index.js`, ctx.b4a.from('console.log("Hello from my Pear app!");\n')) await ctx.vfs.writeFile(`${dir}/index.js`, ctx.b4a.from('console.log("Hello from my Pear app!");\n'))
console.log('Created basic package.json + index.js') ctx.console.log('Created basic package.json + index.js')
console.log('Next (when fully wired): run "pear stage ' + dir + '" using ctx.pear.pearBuild') ctx.console.log(`Next: run "pear stage ${dir}" (uses ctx.pear.pearBuild when available)`)
} catch (err) { } catch (err) {
console.error('Failed to init:', err?.message || err) ctx.console.error('Failed to init:', err?.message || err)
} }
} }
// The coreutils runner executes this file body with `ctx` in scope. const sub = (argv[1] || 'help').toLowerCase()
// We run the command logic directly at the bottom (consistent with other commands like appstore).
const sub = (typeof argv !== 'undefined' && argv[1] ? argv[1] : 'help').toLowerCase()
switch (sub) { switch (sub) {
case 'help': case 'help':
case '--help': case '--help':
case '-h': case '-h':
printHelp(typeof argv !== 'undefined' ? argv[0] : 'pear') printHelp(argv[0] || 'pear')
break break
case 'info': case 'info':
await cmdInfo(ctx) await cmdInfo()
break break
case 'list': case 'list':
case 'ls': case 'ls':
await cmdList(ctx) await cmdList()
break break
case 'stage': case 'stage':
case 'build': case 'build':
const target = (typeof argv !== 'undefined' ? argv[2] : null) || '.' const target = argv[2] || '.'
if (ctx.pear && ctx.pear.pearBuild) { if (ctx.pear && ctx.pear.pearBuild) {
console.log(`Attempting stage of ${target} using ctx.pear.pearBuild (early integration)...`) ctx.console.log(`Attempting stage of ${target} using ctx.pear.pearBuild...`)
try { ctx.console.log('ctx.pear.pearBuild is available. Full pipeline implementation in progress.')
console.log('ctx.pear.pearBuild is available. Full stage pipeline landing in upcoming plan items.') ctx.console.log('Exposed build-related keys:', Object.keys(ctx.pear).filter(k =>
console.log('Exposed Pear build surface:', Object.keys(ctx.pear).filter(k => k.toLowerCase().includes('build') || k.toLowerCase().includes('bundle'))) k.toLowerCase().includes('build') || k.toLowerCase().includes('bundle')
} catch (e) { ))
console.error('Stage attempt error:', e?.message || e)
}
} else { } else {
console.log('pear stage / build: advanced integration in progress (ctx.pear.pearBuild available).') ctx.console.log('pear stage / build: ctx.pear.pearBuild not yet available in this environment.')
console.log('Current exposed packages on ctx.pear:') ctx.console.log('Current exposed packages on ctx.pear:')
await cmdList(ctx) await cmdList()
} }
break break
case 'init': case 'init':
await cmdInit(ctx, (typeof argv !== 'undefined' ? argv[2] : null)) await cmdInit(argv[2])
break break
default: default:
console.error(`Unknown subcommand: ${sub}`) ctx.console.error(`Unknown subcommand: ${sub}`)
printHelp(typeof argv !== 'undefined' ? argv[0] : 'pear') printHelp(argv[0] || 'pear')
break break
} }
}
@@ -1,7 +1,7 @@
{ {
"schema": 2, "schema": 2,
"profileId": "bare-os-posix-like", "profileId": "bare-os-posix-like",
"generatedAt": "2026-05-26T21:57:58.462Z", "generatedAt": "2026-05-26T22:02:23.960Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.", "note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [ "commandIndex": [
{ {
@@ -1,6 +1,6 @@
{ {
"schema": 1, "schema": 1,
"atMs": 1779832678462, "atMs": 1779832943959,
"commands": [ "commands": [
"agent", "agent",
"appctl", "appctl",
File diff suppressed because one or more lines are too long