jssm 5.162.20 → 5.162.21

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.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";function parseFslArgs(argv,spec){const positional=[];const flags={};const shortMap={};for(const[name,fs]of Object.entries(spec.flags)){if(fs.short)shortMap[fs.short]=name}const isBoolean=name=>spec.flags[name]?.boolean;const flagType=name=>{const fs=spec.flags[name];return fs.type??"string"};const coerce=(name,raw)=>{const t=flagType(name);if(t==="number"){const n=Number(raw);if(Number.isNaN(n)){throw new TypeError(`flag --${name} requires a number, got: ${raw}`)}return n}const fs=spec.flags[name];if(fs.enum&&!fs.enum.includes(raw)){throw new Error(`flag --${name} value '${raw}' not in: ${fs.enum.join(", ")}`)}return raw};let i=0;let positionalOnly=false;while(i<argv.length){const a=argv[i];if(positionalOnly){positional.push(a);i++;continue}if(a==="--"){positionalOnly=true;i++;continue}if(a==="-"){positional.push(a);i++;continue}if(a.startsWith("--")){const eq=a.indexOf("=");const name=eq===-1?a.slice(2):a.slice(2,eq);if(!Object.prototype.hasOwnProperty.call(spec.flags,name))throw new Error(`unknown flag: --${name}`);if(isBoolean(name)){flags[name]=true;i++}else if(eq===-1){if(i+1>=argv.length)throw new Error(`flag --${name} requires a value`);flags[name]=coerce(name,argv[i+1]);i+=2}else{flags[name]=coerce(name,a.slice(eq+1));i++}continue}if(a.startsWith("-")&&a.length>1){const short=a[1];const name=shortMap[short];if(!name)throw new Error(`unknown flag: -${short}`);if(isBoolean(name)){flags[name]=true;if(a.length>2)throw new Error(`combined short flags not supported: ${a}`);i++}else if(a.length>2){flags[name]=coerce(name,a.slice(2));i++}else{if(i+1>=argv.length)throw new Error(`flag -${short} requires a value`);flags[name]=coerce(name,argv[i+1]);i+=2}continue}positional.push(a);i++}for(const[name,fs]of Object.entries(spec.flags)){if(flags[name]===void 0&&fs.default!==void 0){flags[name]=fs.default}}const helpText=()=>{const lines=["Usage:"," "+spec.usage,"","Options:"];for(const[name,fs]of Object.entries(spec.flags)){const short=fs.short?`-${fs.short}, `:" ".repeat(4);const longPart=`--${name}`;let arg=" VALUE";if(fs.boolean){arg=""}else if(fs.enum){arg=` ${fs.enum.join("|")}`}else if(fs.type==="number"){arg=" N"}const defStr=fs.default===void 0?"":` (default: ${fs.default})`;lines.push(` ${short}${longPart}${arg}${defStr}`)}return lines.join("\n")};return{positional:positional,flags:flags,helpText:helpText}}const getVersion=()=>"5.162.20";const SPEC={flags:{help:{short:"h",boolean:true},version:{short:"V",boolean:true}},usage:"fsl-export-system-prompt [options]"};const writeStdout=s=>{process.stdout.write(s)};const writeStderr=s=>{process.stderr.write(s)};const printErr=msg=>{writeStderr(`fsl-export-system-prompt: error: ${msg}\n`)};const SYSTEM_PROMPT=`\n# FSL v5 Agent System Prompt (llms.txt)\n\n> **Context**: This document is intended to be served as an \`llms.txt\` file (as standardized by [llmstxt.org](https://llmstxt.org) and similar AI directories) to provide Large Language Models with a mathematically precise, up-to-date syntax guide for FSL (Finite State Language).\n\nYou are an expert developer in FSL (Finite State Language) v5, a domain-specific language for defining mathematically verifiable, finite state machines. Your primary goal is to generate idiomatic, structurally sound FSL v5 code.\n\n## Core Concepts\n\n1. **Machines**: An FSL file defines a state machine. It contains metadata (like \`machine_name\`) and a set of state transitions.\n2. **States & Transitions**: FSL is built on transitions between states. States are automatically inferred from transitions, or can be explicitly declared.\n3. **Transition Types**:\n * \`->\` (Legal transition)\n * \`=>\` (Main transition)\n * \`~>\` (Forced transition)\n * \`<->\` (Bi-directional legal)\n * \`<= >\` (Main left, legal right)\n * \`<~>\` (Bi-directional forced)\n4. **Actions**: Transitions can be triggered by actions. E.g., \`A 'click' -> B;\`\n5. **Probabilities**: Transitions can carry probabilities. E.g., \`A -> 50% B;\`\n6. **Attributes**: Machines can have properties like \`machine_name\`, \`machine_author\`, \`machine_version\`.\n\n## Syntax Guide\n\n### Basic Machine\n\`\`\`fsl\nmachine_name : "Simple Traffic Light";\nmachine_author : "John Doe";\nmachine_version : 1.0.0;\n\nRed 'timer' => Green 'timer' => Yellow 'timer' => Red;\n\`\`\`\n\n### Actions and Multiple Targets\n\`\`\`fsl\nmachine_name : "Vending Machine";\n\nOff 'insert coin' -> Idle;\nIdle 'select item' -> Dispensing;\nDispensing 'dispense' -> Off;\nIdle 'cancel' -> Off;\n\`\`\`\n\n### Explicit State Declarations and Attributes\n\`\`\`fsl\nstate Red : {\n background-color : red;\n text-color : white;\n};\n\nstate Green : {\n background-color : green;\n};\n\nRed -> Green;\n\`\`\`\n\n## Agent Directives\n- **Do not hallucinate features**: FSL is a strict, finite state machine language. Do not attempt to use unbounded loops or syntax from general-purpose languages like Python or JavaScript.\n- **Always output valid FSL**: Ensure statements end with semicolons (\`;\`).\n- **Use single quotes for actions**: E.g., \`StateA 'action name' -> StateB;\`.\n\n---\n*Generated by the FSL v5 Toolchain*\n`;function cli(argv){let parsed;try{parsed=parseFslArgs(argv,SPEC)}catch(error){printErr(error.message);return Promise.resolve(1)}if(parsed.flags.help){writeStdout(parsed.helpText()+"\n");return Promise.resolve(0)}if(parsed.flags.version){writeStdout("fsl-export-system-prompt "+getVersion()+"\n");return Promise.resolve(0)}writeStdout(SYSTEM_PROMPT.trim()+"\n");return Promise.resolve(0)}async function main(){const argv=process.argv.slice(2);const code=await cli(argv);process.exitCode=code}void main();
2
+ "use strict";function parseFslArgs(argv,spec){const positional=[];const flags={};const shortMap={};for(const[name,fs]of Object.entries(spec.flags)){if(fs.short)shortMap[fs.short]=name}const isBoolean=name=>spec.flags[name]?.boolean;const flagType=name=>{const fs=spec.flags[name];return fs.type??"string"};const coerce=(name,raw)=>{const t=flagType(name);if(t==="number"){const n=Number(raw);if(Number.isNaN(n)){throw new TypeError(`flag --${name} requires a number, got: ${raw}`)}return n}const fs=spec.flags[name];if(fs.enum&&!fs.enum.includes(raw)){throw new Error(`flag --${name} value '${raw}' not in: ${fs.enum.join(", ")}`)}return raw};let i=0;let positionalOnly=false;while(i<argv.length){const a=argv[i];if(positionalOnly){positional.push(a);i++;continue}if(a==="--"){positionalOnly=true;i++;continue}if(a==="-"){positional.push(a);i++;continue}if(a.startsWith("--")){const eq=a.indexOf("=");const name=eq===-1?a.slice(2):a.slice(2,eq);if(!Object.prototype.hasOwnProperty.call(spec.flags,name))throw new Error(`unknown flag: --${name}`);if(isBoolean(name)){flags[name]=true;i++}else if(eq===-1){if(i+1>=argv.length)throw new Error(`flag --${name} requires a value`);flags[name]=coerce(name,argv[i+1]);i+=2}else{flags[name]=coerce(name,a.slice(eq+1));i++}continue}if(a.startsWith("-")&&a.length>1){const short=a[1];const name=shortMap[short];if(!name)throw new Error(`unknown flag: -${short}`);if(isBoolean(name)){flags[name]=true;if(a.length>2)throw new Error(`combined short flags not supported: ${a}`);i++}else if(a.length>2){flags[name]=coerce(name,a.slice(2));i++}else{if(i+1>=argv.length)throw new Error(`flag -${short} requires a value`);flags[name]=coerce(name,argv[i+1]);i+=2}continue}positional.push(a);i++}for(const[name,fs]of Object.entries(spec.flags)){if(flags[name]===void 0&&fs.default!==void 0){flags[name]=fs.default}}const helpText=()=>{const lines=["Usage:"," "+spec.usage,"","Options:"];for(const[name,fs]of Object.entries(spec.flags)){const short=fs.short?`-${fs.short}, `:" ".repeat(4);const longPart=`--${name}`;let arg=" VALUE";if(fs.boolean){arg=""}else if(fs.enum){arg=` ${fs.enum.join("|")}`}else if(fs.type==="number"){arg=" N"}const defStr=fs.default===void 0?"":` (default: ${fs.default})`;lines.push(` ${short}${longPart}${arg}${defStr}`)}return lines.join("\n")};return{positional:positional,flags:flags,helpText:helpText}}const getVersion=()=>"5.162.21";const SPEC={flags:{help:{short:"h",boolean:true},version:{short:"V",boolean:true}},usage:"fsl-export-system-prompt [options]"};const writeStdout=s=>{process.stdout.write(s)};const writeStderr=s=>{process.stderr.write(s)};const printErr=msg=>{writeStderr(`fsl-export-system-prompt: error: ${msg}\n`)};const SYSTEM_PROMPT=`\n# FSL v5 Agent System Prompt (llms.txt)\n\n> **Context**: This document is intended to be served as an \`llms.txt\` file (as standardized by [llmstxt.org](https://llmstxt.org) and similar AI directories) to provide Large Language Models with a mathematically precise, up-to-date syntax guide for FSL (Finite State Language).\n\nYou are an expert developer in FSL (Finite State Language) v5, a domain-specific language for defining mathematically verifiable, finite state machines. Your primary goal is to generate idiomatic, structurally sound FSL v5 code.\n\n## Core Concepts\n\n1. **Machines**: An FSL file defines a state machine. It contains metadata (like \`machine_name\`) and a set of state transitions.\n2. **States & Transitions**: FSL is built on transitions between states. States are automatically inferred from transitions, or can be explicitly declared.\n3. **Transition Types**:\n * \`->\` (Legal transition)\n * \`=>\` (Main transition)\n * \`~>\` (Forced transition)\n * \`<->\` (Bi-directional legal)\n * \`<= >\` (Main left, legal right)\n * \`<~>\` (Bi-directional forced)\n4. **Actions**: Transitions can be triggered by actions. E.g., \`A 'click' -> B;\`\n5. **Probabilities**: Transitions can carry probabilities. E.g., \`A -> 50% B;\`\n6. **Attributes**: Machines can have properties like \`machine_name\`, \`machine_author\`, \`machine_version\`.\n\n## Syntax Guide\n\n### Basic Machine\n\`\`\`fsl\nmachine_name : "Simple Traffic Light";\nmachine_author : "John Doe";\nmachine_version : 1.0.0;\n\nRed 'timer' => Green 'timer' => Yellow 'timer' => Red;\n\`\`\`\n\n### Actions and Multiple Targets\n\`\`\`fsl\nmachine_name : "Vending Machine";\n\nOff 'insert coin' -> Idle;\nIdle 'select item' -> Dispensing;\nDispensing 'dispense' -> Off;\nIdle 'cancel' -> Off;\n\`\`\`\n\n### Explicit State Declarations and Attributes\n\`\`\`fsl\nstate Red : {\n background-color : red;\n text-color : white;\n};\n\nstate Green : {\n background-color : green;\n};\n\nRed -> Green;\n\`\`\`\n\n## Agent Directives\n- **Do not hallucinate features**: FSL is a strict, finite state machine language. Do not attempt to use unbounded loops or syntax from general-purpose languages like Python or JavaScript.\n- **Always output valid FSL**: Ensure statements end with semicolons (\`;\`).\n- **Use single quotes for actions**: E.g., \`StateA 'action name' -> StateB;\`.\n\n---\n*Generated by the FSL v5 Toolchain*\n`;function cli(argv){let parsed;try{parsed=parseFslArgs(argv,SPEC)}catch(error){printErr(error.message);return Promise.resolve(1)}if(parsed.flags.help){writeStdout(parsed.helpText()+"\n");return Promise.resolve(0)}if(parsed.flags.version){writeStdout("fsl-export-system-prompt "+getVersion()+"\n");return Promise.resolve(0)}writeStdout(SYSTEM_PROMPT.trim()+"\n");return Promise.resolve(0)}async function main(){const argv=process.argv.slice(2);const code=await cli(argv);process.exitCode=code}void main();