{"id":"logicsrc.com/opencontext","name":"opencontext","commands":["opencontext"],"examples":[{"run":"opencontext init <dir>","does":"Create a context project that validates out of the box"},{"run":"opencontext validate --strict","does":"Check schemas, references and permissions"},{"run":"opencontext doctor","does":"Report context health and a score, flagging stale items"},{"run":"opencontext resolve --role <role> --task \"<task>\" --explain","does":"Show the context a role gets for a task, and why"}],"description":"Reference implementation of the LogicSRC OpenContext standard for portable, permissioned agent context.","homepage":"https://github.com/profullstack/logicsrc/tree/master/packages/opencontext","repository":"https://github.com/profullstack/logicsrc","license":"MIT","agentic":true,"latest_version":"0.16.0","vendor":"Profullstack","install":"curl -fsSL https://logicsrc.com/opencontext/install.sh | sh","publisher":"profullstack","w3bs":"w3bs install logicsrc.com/opencontext","scan":{"status":"passed","scanner":"threatcrush 0.13.30","filesScanned":1247,"summary":{"critical":4,"high":2,"medium":29,"low":32,"info":0},"malware":0,"truncated":false,"version":"0.16.0","sources":{"installer":"https://logicsrc.com/opencontext/install.sh","installerSha256":"3eceb83fc07e72f8a5a7a134015a1115c111bba9a1c1a7e8b30a92372a480782","repository":"github.com/profullstack/logicsrc","commit":"fd0a6047e3a4a77e846e1dba240ce9584b1f6b90"},"notes":[],"scannedAt":"2026-11-02T22:59:38.814Z","findings":[{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/src/routes/keyring.mjs","line":32,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/keyring.ts","line":83,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/packages/logicsrc-mcp/src/keyring.ts","line":20,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/providers/ssh.ts","line":129,"malware":false},{"ruleId":"js-host-header-trust","title":"URL built from the Host header","severity":"high","category":"code","cwe":"CWE-346","file":"source/apps/commandboard-web/server.js","line":27,"malware":false},{"ruleId":"js-ssrf-outbound-request","title":"outbound request to a non-constant URL","severity":"high","category":"code","cwe":"CWE-918","file":"source/apps/pwa/public/sw.js","line":45,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/commandboard-web/src/main.ts","line":19,"malware":false},{"ruleId":"sh-remote-script-execution","title":"network output piped into a shell","severity":"medium","category":"code","cwe":"CWE-494","file":"source/apps/logicsrc-web/public/install.sh","line":71,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/app/[[...slug]]/page.tsx","line":59,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/app/layout.tsx","line":80,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/app/pricing/page.tsx","line":42,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/components/breadcrumbs.tsx","line":43,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/components/pit-footer.tsx","line":16,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/components/site-shell.tsx","line":36,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/pwa/public/keyring.js","line":51,"malware":false},{"ruleId":"sql-template-interpolation","title":"SQL built from a template literal or f-string","severity":"medium","category":"code","cwe":"CWE-89","file":"source/apps/pwa/src/routes/rotation.mjs","line":79,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":253,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":297,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":299,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":303,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":307,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":326,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":327,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":329,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":330,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":331,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":334,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":395,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":402,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":408,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/opencontext/src/ids.ts","line":10,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/opencontext/src/ids.ts","line":11,"malware":false},{"ruleId":"js-timing-unsafe-mac-compare","title":"MAC or signature compared with ==","severity":"medium","category":"code","cwe":"CWE-208","file":"source/packages/opencontext/src/validate.ts","line":208,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/openerrand/src/browser.ts","line":34,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/openontology/src/ids.ts","line":20,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/appbar.test.mjs","line":10,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/keyring.test.mjs","line":137,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/signup-profile.test.mjs","line":61,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/signup-profile.test.mjs","line":72,"malware":false},{"ruleId":"secret-openai-key","title":"OpenAI API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/desktop-flow.test.ts","line":315,"malware":false},{"ruleId":"secret-generic-api-key","title":"Generic API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/desktop-flow.test.ts","line":315,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/keyring.test.ts","line":86,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/keyring.test.ts","line":88,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":125,"malware":false},{"ruleId":"secret-generic-api-key","title":"Generic API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":177,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":184,"malware":false},{"ruleId":"secret-generic-api-key","title":"Generic API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":198,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":204,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":52,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":75,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":135,"malware":false},{"ruleId":"js-hardcoded-crypto-key","title":"hardcoded key material","severity":"low","category":"code","cwe":"CWE-321","file":"source/packages/cli/src/rotators.test.ts","line":222,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":258,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/vault-clean.test.ts","line":10,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/logicsrc-mcp/src/keyring.test.ts","line":41,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/logicsrc-mcp/src/keyring.test.ts","line":44,"malware":false},{"ruleId":"secret-aws-access-key","title":"AWS Access Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/permissions.test.ts","line":260,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/permissions.test.ts","line":261,"malware":false},{"ruleId":"secret-stripe-key","title":"Stripe Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/permissions.test.ts","line":262,"malware":false},{"ruleId":"secret-aws-access-key","title":"AWS Access Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/security.test.ts","line":228,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencreds/src/categories.test.ts","line":98,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencreds/src/categories.test.ts","line":103,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencreds/src/import-router.test.ts","line":121,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/providers/ssh.test.ts","line":7,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/rekey.test.ts","line":33,"malware":false},{"ruleId":"secret-openai-key","title":"OpenAI API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/vault-encryption.test.ts","line":21,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/vault-encryption.test.ts","line":21,"malware":false}]}}