Version 10.4 5/30/2020
May 30, 2020 Β· View on GitHub
- MySQL now supported both as filesystem and for script access. BINARIES now has ChatscriptMysql.exe See Esoteric-ChatScript/ChatScript-mysql manual. ^mysqlinit, ^mysqlclose, ^mysqlquery and command line parameter mysql=
- !-word !!-word supported for backwords not
- $$cs_badspell is set if NLP partially shut down after too many spelling mistakes (if you set $cs_badspellLimit )
- ~replace_spelling instead of
replacein ^testpattern call. - cs_summary - shows ms spend in preparation vs rule process vs cleanup in current volley (to terminal)
- %badspell - how many severe bad spellings happened in what size current sentence "15-40" means 15 in 40 word sentence.
- :timelog shows size of largest message as well
- replace: ?_da now also changes units even when no separation is needed because word follows number e.g. replace: ?_km kilometer will change both 50km and 50 km to 50 kilometer
- ^reportbug(text) puts text into LOGS/bugs.txt (std bug log) thus allowing scripts to message bugs in addition to the engine's messaging.
- $cs_outputlimit if set will generate a bug message if cs wants to output messaging larger than that When recording cs output into a db, a field might be limited to 4K bytes and fail if message is bigger. This will record the attempt as a bug so you can find out why your script did that.
- $cs_sentences_limit, if set, will cause CS to not process remaining sentences above that limit in a volley. Internal default was 50. Presumed that any user saying that much will not be well handled by bot and not worth investment of further time by bot.
- upgrades to engine manual documentation
Version 10.3 5/2/2020
- :timelog now reports both engine NLU time and separately q wait time to get to engine (Linux)
- canon: x y now supports 3rd argument MORE_FORM or MOST_FORM for marking adjectives and adverbs
- German adverb/adjective MORE and MOST form flags now done by engine (when in german language mode)
- ^spell now actually pays attention to its 2nd argument (factset id)
- $cs_indentlevel controls indenting when tracing in ^testpattern.
- $cs_tracetestoutput - set to 1 to force tracing in ^testoutput
- updated to Duktape 2.5 Javascript embedded engine
- cs_initmore.txt config file (if present) will load additional params and override cs_init.txt and corresponding run time parameter config2= filename
- cs_initenglish.txt (based on the current language being english - or can be any other language) useful because foreign languages tend to require higher dictionary entry counts - reads AFTER cs_initmore
- if language is set to "ideographic" then spellcheck is disabled and tokenization will be each character is its own token (japanese, korean, chinese, etc) 11 %crosstalk1 - second communicator variable across users in engine
- you can force a server to begin server logging w/o restarting it by creating top level file serverlogging.txt with arbitrary content. remove file to restore prior state of server logging. This is also done by :serverlog 1 and :serverlog 0 to force logging by script
- documentation in Esoteric Chatscript - ChatScript Engine expanded
Version 10.2 4/19/2020
- concept intersect now allows 3 in a row instead of just 2.
- Practicum on spelling and interjections has additional writeup at end about handling marking without changing a word permanently or dedicating a rule to performing marking.
- Builtin support for emojis provided, words starting and ending in : will be in the concept
~emoji and are easy to pattern match, eg: in script have:
replace: π€² :palms_up_together: replace: π :grinning_face_with_smiling_eyes: or add just the pairs to the implied replace: files in the substitution files in LIVEDATA Thanks to Andy Heydon of Kore.AI for this. - BINARIES has a Mac compiled executable for 10.1+ version and NON-WINDOWS Non-C has updated XCODE project (thanks Andy)
- ^pos(grade $_word) shows the system's knowledge of grade word is learned in: 0 = kindergarten 2 = grades 1-2 4 = grades 3-4 6 = grades 5-6 8 = beyond grade 6
- engine compile flag FNVHASH, when used, replaces hash algorithm DJB2 with FNV1a, which seems to have fewer collisions with utf8 emoji characters (if you have a lot of them)
Version 10.1 3/29/2020
- ^original(rawuser)
- #! comment #! inside a pattern sent to compilepattern function is %crosstalk documented?
- ^addwordafter
- ChatScript-ClientServer-Manual at end documents client commands.
- CS Spellcheck can accept german nouns in lower case (singular or plural) and make them upper case. Common pluralizations are handled that involve suffixes, but not yet ones that change accent marks on vowels.
- factset limit raised from 20 to 30, so @29 is legal.
- ^addwordAfter(word _0) - inserts word into sentence after the position of given match variable. _0 designates a position, and can be a match variable name or something that evaluates into a word index. Does not alter pos-tagging or parsing and does not mark itself. 8: ^original(rawuser) returns exactly what user sent in, before any adjustments are made to it.
- ^pos(xref wordindex kind) This returns the index of the word in sentence cross-referenced by some parser data found at the designated in wordindex. Kind includes: crossreference, indirectobject, object, complement, phrase, verbal, clause. Returns 0 if no xref found.
- Commandline paramenter debuglevel=n to enhance or reduce server log with more data.
- Commandline paramenter buglog and nobuglog to enable or disable bug logging. Order dependent with serverlog and noserverlog
- %lastcurltime shows statistics on the last call to jsonopen
- :labelremap for a topic builds an xref of internal tags to their labels (if they have one) into TMP/labels.txt
- keyword concept intersection supported in patterns. E.g.
animalstasty will reference all animals considered tasty.
Version 10.0 1/29/2020
- $cs_addresponse holds name of ^fn(message ruletag) to tap CS user output queue usage: 1. multiple reacts for different speech to text interpretations 2. detect already given answer and tell user: I already told you.
Version 9.8 11/10/2019
- ^MemoryFree($data) - now takes optional argument whose data is to be available after freeing up everything. Can be string or can be JSON object (in which case a new transient json structure will be created to hold it).
- :variables takes more arguments
- You can call ^memorymark multiple times and free one by one
- ^testpattern accepts trace field and
replaceconcept to be equivalent to replace: in script - :clearlog to erase current user log file
- ^trace() turns on all trace for the duration of this call, even if within ^notrace code
Version 9.7 8-31-2019
- New manual Advanced Layers explains layering in cs and the boot layer.
- Patterns are now allowed as concept members. concept: ~leaving( sayonara "(going *~2 now)" exiting)
Version 9.62 8/18/2019
- :listvariables reports all references (set and get) of variables - see finalizing a bot manual
- :build xxx quiet -- says nothing if compile works except done. does not issue warning. If compile doesnt work, summarized the fails.
- ^counttopics - new choices "responders" "availableresponders", renamed argument "available" to "availablegambits" but system still accepts "available" to mean that
- ^purgeboot(what) - what is either a factset id or a bot id. All facts stored in the boot layer from that factset or owned by that botid are erased from the boot layer. This enables one to revise facts in the boot layer by removing old ones and making new ones with flag FACTBOOT
Version 9.61 7/28/2019
- @retry in pattern allows pattern to self retry without output execution of ^retry(rule)
- :regress exit if your 1st argument to :regress is "exit", then CS will quit with return code 0 when it passes or return code 1 when fail. Good for batch file autotesting.
- ^delete now allows 2nd argument BOOT to authorize killing system facts 4 ^setFactOwner(fact idbits) Changes ownership bits on a fact. 5 1st argument to ^format deprecated. No longer need to say INTEGER or FLOAT 6 ^csboot allowed to be multiply defined without error message because Multibot deploys
Version 9.6 7/14/2019
- unmark(@ _0) changed to unmark the width of the match, not just the start position
- JSONLOOP (x y z OLD/NEW) choose which way to walk a json object/array either newest first or oldest first
- TAB macro flag Be able to treat table data using tabs to mean * for that tab
- ^bug() be able to report a bug to system bug log (or script compiler) for runtime code (particularly in a table being compiled)
- %tableinput - current input line to table processing
- ^mark(word _0 ALL/ONE) when marking, either propogate marks to all encompassing concept sets or just mark this one word
Version 9.5 6/26/2019
- Testoutput now returns field error: true if code execution failed.
- you can force ^testpattern to trace user regardless of whether tracing is on or not or whether nouserlog is set. Just prepend to your input ":tracepattern"
- unmark(@ _0) unmark everything starting there (but only at that 1 start spot, not range implied. This include sthe concepts and topics list and marks themslelf.s
- Serious bug fixed if you have topics in both level 0 and level 1. CS shipping of level 0 does not have topics so almost no one noticed this bug til now.
Version 9.41 - EMERGENCY RELEASE 6/4/2019
9.4 has a bug wherein it inadvertently writes logging data to the user log file while processing json parse data. This can blow out disk space in a heavily used server. This has been fixed. Other changes:
- ~filename - words with file suffixes
- crashpath= names where to write about fatal signal handers in linux... writing in the cs directory might be erased by an auto redeploy 3 %zulutime adds elapsed time at end
- ^jsonloop(var1 $var2) similar to loop but runs thru json members and is the most efficient and compact way to do so
version - 9.4 5/27/2019
- You can treat a json object as an array of fields. data.tablet.testit = 1 _field cx] returns field name of object after which you can do _field to get the value
- $data.something[-1] is the opposite end from [0], applies to object or arrays For arrays it's the highest index value. For objects its the first field name.
- ^pos(preexists word) -- was word in dictionary BEFORE this volley?
- to use a variable name AS a field name, escape it data.\varname = hello uses varname
- full := assign in pattern
- data format for testpattern simplified, now parterns is array of strings not array of objects
- Rule-based spellchecking added to spelling practicum
- ^changebot(botname botid) change identity on the fly, allowing this bot to see facts, functions, and topics of botname instead of itself.
- updated documentation to note that RESPONSE_NOCONVERTSPECIAL on $cs_ response is default.
version 9.31 4/30/2019
- pattern assignment now allowed with system variables also (_0:=%time)
- changes to the ^testoutput function. it does NOT erase its changes. It may return null for variable assignments. It will return a text string representing the json data if a returned variable is a json structure name.
- for both ^testinput and ^testoutput, if the value of an incoming variable looks like a json structure, it will be converted into the std internal json data structure and the variable set to its json name.
- ^testpattern matchvar returns the original text, not the canonical
version 9.3
-
new practicum document: Practicum-Concepts-and_meaning
-
%factexhaustion , which can take assignment to false to turn off the flag
-
assignment in patterns _0:= var or matchvar or 'matchvar- eg
-
^compilepattern
-
^testpattern
-
^compileoutput
-
^testoutput The above 4 functions allow you to synthesize a rule from its component parts. This allows some other dialog system to use CS capabilities as an external API (e.g. web-based scriptwriting). It also means you can store compiled patterns and outputs in a database and mix and match rules in synthetic topics on the fly. #2 supports ^testpattern by allowing a pattern to glean data and return values.
version 9.2 3/24/2019
- replace: blackdecker \BLACK+DECKER now allowed to prevent + from interpreting to space
- ChatScript Advanced Manual has been split so that main areas of cs like concepts, topics, etc have their own advanced manuals and the Advanced manual itself is just a grab-bag of unique capabilities
- ^pos(ismixedcase $_word) returns 1 if word is has both upper and lowercase letters. Fails otherwise.
- data.array[] = data1 This will store data1 non-uniquely (you can get repeats). You can use ^jsonarrayinsert(UNIQUE cs_json_array_defaults = #JSON_ARRAY_UNIQUE to default all such assigns to be unique unless specified otherwise
- %serverlogfolder %userlogfolder %tmpfolder give the current paths to those folders
version 9.12 2/20/2019
- bug fixes
version 9.11 2/13/2019
- bug fixes
version 9.1 2/12/2019
- restored USER_FLAG4 for facts
- command line parameter "trustpos" allows things like
concept:
all(feeln)
to work. By default we dont trust pos-tagger and CS will tolerate all forms. - ^responsepattern(responseid) part of the ^response.. world, returns the pattern that matched inside [] of rule generating output (if it is matched that way) For a rule like: u: ([ (pattern 1) (pattern 2) ([try 3])]) It will tell you which piece of the pattern matched. Handy for debugging why a pattern matches incorrectly w/o having to read a trace log and analyzing each + and -. 4: replace: 'xxx yyy allows you to split during tokenization any word followed by 'xxx into two words, original sans 'xxx and yyy. eg replace: 've have gives "companies've => "companies have"
version 9.0 1/1/2019
- param inputlimit=n truncates user input to this size. On a server, users have a default limit of 80K per volley but malicious users abuse this. You can set this to explicitly limit how much input users can actually provide. Consequences of excess input are, for example, sluggish performance because it may try to spell correct junk input.
- ^eval1(arg) like ^eval(x) but evaluates its argument before passing into ^eval.
- mark ~PASSIVE_VERB on such.
- !~set in concept declaration - see advanced concepts: exclusion. e.g., concept: ~wildanimals (!~pet_animals ~animals)
- "fundamental meanings" can now be used as keywords in concepts, topics, and patterns. see advanced cs: advanced concepts: fundamental meaning (quoted below) Fundamental meaning consists of an actor, an action, and an optional actee. In the active voice sentence "I love you", the actor is "I", the action is "love", and the actee is "you". In the passive voice sentence "I was arrested", there is no actor, the verb is "arrested", and the actee is "I". Wherease in the passive voice sentence "I was arrested by the police", the actor is "police".
Fundamental meaning patterns always have a verb, which as a keyword is designated as
"|arrest|" or whatever word or concept you want to detect.
A pattern which includes a fundamental actor is shown as
"~pronoun|arrest|". One that includes an actee is
"|arrest|~police", whereas one that has both actor and actee is
"~pronoun|arrest|~police".
Version 8.8 11/26/2018
-
^spellcheck(input dictionary) input is tokenized words separated by spaces dictionary is json array of words It outputs the input words adjusted by any spelling correction. Useful if you read dynamic menus from an API endpoint and then want to match user input against that menu, whose elements may not be in the main CS dictionary
-
Interjections from LIVEDATA now also mark their words as a normal concept set entries, so you can suppress changing the words to an interjection and yet still match on the interjection concept. This make writing scripts for interjections significantly easier. See new document below.
-
new document Practicum- spelling and interjections
-
you cannot use { or ( immediately after a bidirectional wildcard and *~0b is now legal# Version 8.7 11/11/2018
-
$cs_userfactlimit = * means keep all facts
-
documented #SPLIT_QUOTE tokencontrol (removes double quotes from input)
-
^stats(TEXT) bytes of heap left, ^stats(DICT) dictionary entries left
-
^jsontext(FactId) adds quotes if object of fact is a json text FAILS if not a json fact. CS represents json text as ordinary unquoted text, but text that looks like float numbers would be subject to possible float truncations or expansion of digits.
-
^replaceword(word location) arguments are like ^mark and ^unmark, except this changes the actual original word at the position (which is just 1 word of the sentence). This changes no concept markings (which you can do yourself with mark and unmark). With this, for example, you could unrevise a spellfix like this: u: (_~emosad) _tmp _0)
-
Parameter: repeatLimit=n Servers are subject to malicious inputs, often generated as repeated words over and over. This detects repeated input and if the number of sequential repeats is non-zero and equal or greater to this parameter, such inputs will be truncated to just the initial repeats. All other input in this volley will be discarded.
Version 8.6 10/4/2018
-
configurl=http://xxx as a command line or config file parameter allows you to request additional parameters from a url. This would be important if for security reasons you didn't want some parameters visible in a text file or on the run command of CS.
-
Normally facts created by user script only impact that user (saved in their topic file). Now you can create facts that can affect all users. Maybe you want to write a bot that learns from users like Microsoft's Tay did. a) (secondary) When you modify some pre-user fact (layer 0, layer 1, boot layer) the change will move into the boot layer and thereafter be visible to all users. b) (primary) When you create JSON data in a special way, it will migrate to the boot layer at the end of the user's turn and not be saved in the user topic file. To do this, merely use BOOT instead of PERMANENT or TRANSIENT on the initial args to a json structure creator, eg ^jsoncreate(BOOT OBJECT). Facts moved to boot will be lost if the server restarts or you call the boot function. A command line argument of "recordboot" will direct CS to write the these facts into a top level file "bootfacts.txt" as they are migrated to boot. You would be responsible for writing a boot function that reads it on execution to recover these facts on startup. Direct modification of system facts in (a) are not saved. You would have to write your own scripts to track those changes.
There is no way of collecting garbage from abandoned pre-user data, so do the above too often and the server may run out of memory and die.
- ^stats(FACTS) returns how many free facts are left.
Version 8.5
- ^walktopics('^func) finds the topics current bot can access and calls ^func with topic name, iteratively.
- ^walkvariables('^func)
- ^reset(VARIABLES) - sets all global user variables to NULL
- ^reset(FACTS) - kills all permanent user facts
- ^reset(HISTORY) forget what was said previously
- not new but now documented %input = n sets that system variable Other system variables can be set as well, sometimes locking them into that value until you do %xxx = .
- indirect function call ^_xx holds a function name
version 8.4 8/12/2018
- ^findrule(label) finds a rule with that label (not tag) anywhere in all topics and returns the tag for it (presumes unique label)
- in filesxxx build file, if you name a directory with two tailing slashes, then the system will compile all files recursively within and below that folder.
- $cs_responseControl RESPONSE_NOFACTUALIZE to suppress fact creation of bots output
- script compiler directive ignorespell: to block some kinds of spelling warnings ignorespell: word1 word2 ... (use lower case form of word, will not warn about upper and lower case mixtures) ignorespell: * turn off all spelling warnings on casing ignorespell: !* turn on all spell warnings on casing
version 8.31 6/18/2018
- ^readfile(line filename 'function) will read lines from the file and pass them untouched as the sole argument of function. This is formerly called: ^jsonreadcvs which is legal but deprecated.
- max match variable is now _30 instead of _20
version 8.3 6/9/2018
- new manual Practicum - Messaging
- loop now allows function call as argument: loop( ^length(@0)) {...}
- new manual Practicum-ControlFlow
- may now use match variables and quoted match variables in json indirections:
_x._5 = 5 _x.'_5 = 5 _x._5 etc - :allmembers ~concept ~nonconcept ~nonconcept dumps the members of ~concept into TMP/tmp.txt, one per line, but excludes any that are member of the ~nonconcept sets.
- command line param "authorize" allows all server users to use : commands, regardless of authorized.txt.
- new manual Practicum - Gleaning
version 8.2 4/1/2018
- debugger has autosizing to your screen and save/restore for size/location adjustments you make
- ^query(exact_svrange x y ? -1 ? ? lowvalue highvalue) Finds facts whose object is x<=object<=y numeric
- ^query(exact_vrange ? y ? -1 ? ? lowvalue highvalue) see Predefined queries section in Facts Manual
version 8.1 2-18-2018
1.CS Debugger now has been released in Release mode, so maybe it works for you, and has new features-- read the manual again. 2. new manuals: Practicum- Rejoinders and Practicum- Patterns 3. $cs_sequence wins over default sequence limit of 5 words in a row 4. !<< >> is now legal
version 8.0 1/31/2018
- files to compile by script compiler must now end with suffix .top or .tbl so you can allow other files in same directories (like readme.txt, etc).
- :timelog computes avg/min/max of a server log response times
- for json arrays can now do: _array2 and $_array1 += value
- Windows GUI debugger for CS. See ChatScript debugger manual.
version 7.73 12/7/2017
- several fixes to pattern matcher
version 7.72 IMPORTANT FIX FOR BUG INTRODUCTION IN 7.6 -- KNOWLEDGE of adverbs in dictionary lost
- param traceuser=username to make a server trace that user only
version 7.71 11/29/2017
- :spellit some sentence, tells you what spellcheck found to modify it
version 7.7 11/19/2017
- DLL version of ChatScript now part of std release (untested)
- $cs_outputchoice to force random output choice
- :trace treetagger
- Spellcheck will fix words with excessive repeated letters will be adjust. 3 or more in a row truncated to 2. If not recognized, each single pair of 2 will be tested as one. so hellllloooooo becomes helloo becomes hello
- ~noun_phrase added to allow you to grab noun phrases in input
- treetagger chunks (if available) get marked
- :trace INPUT to see input w/o all the concept bindings
- :tokenize - subset of :prepare that just shows resulting transformations on input, no pos and concept marking.
- :trace all universal - sets engine to trace everything listed (even in server mode)
- System now handles multiple upper case forms of a word, so it can memorize the particular ones you do differently in concepts and return the correct one.
version 7.61
- ^pos(canonical xx all) get all canonical forms (for foreign use)
- ^mark(_0 value single) dont mark the entire implication chain, just the argument given
- Advanced manual now has a section on advanced tokenization
version 7.6 10/22/2017
- ~capacronym - acronyms that are all caps, all letters
- :trim now supports optional quoted first param :trim "keepname" which instead of dumping all files it sees into a single tmp/tmp.txt file keeps the names of the files it sees separated into tmp/*.txt
- you can now specify db name to postgres 4, ^pos(isalluppercase xxx)
- implicit concept set for [] and {} in patterns when simple words/phrases/concepts
- :dedupe filepath, outputs into tmp/filename just unique lines from the input
- command line parameter defaultbot=name gives the name of the default bot to use, overriding the defaultbot table value.
- ^timeinfofromseconds now returns 2 more values, the months index and the dayofweek index
Version 7.55 9/24/2017
- new PDF document: ChatScript Coding Standards
- RESPONSE_CURLYQUOTES converts on output plain quotes to curly ones
Version 7.54 8/27/2017
- limit on arguments to outputmacros raised to 31 from 15
- ^setresponse(index message) # revises existing response to this (can be used in postprocessing)
- CS server protocol allows a single null-terminated string, with user and bot components separated by ascii 1 instead of ascii 0.
- ^pos(canonical xxx yyy) takes optional 3rd argument yyy, the pos-tag of the word (since words using foreign dictionaries may have different canonical values based on pos-tag).
Version 7.53 8/12/2017
- :tsv convert tsv to table form (putting quotes around things without it)
- %externaltagging
- improved control script manual
Version 7.52 7/8/2017
- ^respond(~xxx TEST) conditional execution of a topic to see if a match would occur (no output)
- revision of german noun pos tags in dictionary
Version 7.51 6/25/2017
- ^pos(isuppercase xx) does it begin with uppercase letter
- cs_proxyserver // "http://local.example.com:1080" $cs_proxymethod 1 is most common value to use- see https://curl.haxx.se/libcurl/c/CURLOPT_HTTPAUTH.html 3 tmp= command line -- reassign location of TMP directory
- ^jsonopen allows json composite reference to be postdata argument, will write it into text as the data for you
- :quotelines file, reads lines and puts doublequotes around them
- Spanish concepts (ontology) and Livedata
Version 7.5 6/18/2017
- :dualupper - list words that have more than one uppercase form
- hidefromlog param - list json fields not to save into user or server log
- ^jsonparse autoconverts \unnnn into corresponding utf8 characters
- :trim 12 - put out rule label then input then output
- $cs_saveusedJson - destory any json not referred to via a user variable when saving user
- new spelling-marking manual
Version 7.42 5/28/2017
- *~8b for bidirectional search
- ^burst($val digitsplit) splits into two pieces a word part and a digit part (dd12 => dd 12) and (12dd => dd 12) - if it starts with digit, gets all consecutive digits as second value and all the rest as first. Otherwise if ends with digit, gets all consecutive rear digits as second value and rest of word before as first value.
- may now call outputmacros from patterns, it protects match variables across the call
Version 7.411 5/1/2017
- fixing numeric bugs
Version 7.41 4/30/2017
- ^setposition now allows a wildcard id as the second and last argument
- the ? operator can now check for value in json array.
- ^format( integer/float formatstring value) does format of doublefloat or int64 integer
- ^clearmatch() resets all match variables to unmatched
- ^wordatindex() now support ranges, allows optional 3 argument end. Or second argument can be "_0"
- $cs_numbers = french, indian, american or other
Version 7.4 4/24/2017
- $x.y[] = 1 autogenerates a json array
- $cs_fullfloat & 64bit float & e-notation means the system gives you full precision, not 2 digit
- JSONOPen now performs urlencoding automatically
- servertrace command line param - forces all users to trace
- erasename command parameter - full user reset if found in input
- compile outputmacros in any order (but must already be defined if used by a table)
- ^pos(IsModelNumber x) and ^isInteger and ^isFloat
Version 7.31 4/8/2017
--- NEED TO RECOMPILE YOUR BOT! format has changed in TOPIC folder
- ^wordAtIndex({original, canonical} n) retrieves word at index either original or canonical
- ^cs_reboot and ^reboot
- $x.y = 1 autogenerates
- replace: now takes quoted expressions on the right side, decoding to x+y
- Livedata- internalconcepts.top is a concept listing all internal non-enumerated concepts
- Livedata- numbers.txt (per language) describes canonical numeric value of numerically oriented words
- Previously undocumented ^makereal function changed and documented to take an argument. It allows to make transient facts in a factset permanent (or such facts created after a given fact)
Version 7.3 3-4-2017
- topic files of user stored by language as well as user id and bot name if not english
NO_CONDITIONAL_IDIOM^tokenize(WORD xxx)andtokenize(FULL)- MemoryGC
?$varpattern test%timeout^isnormalword(value)^isnumber(value)- string comparison in IF or pattern now supports
<><=>=for string ordering (case insensitive) :redo FILE filename xxxxx-- to name file to open instead of std backup of last turnloglimit=n-- where n is number of MB log rolling^removepropertysupportsHAS_SUBSTITUTEto turn off a substitution fromLIVEDATA/- Italian dictionary support
version 7.2 2-9-2017
^jsonreadcvstakes optional 3rd argument - function to invoke with the fields instead of returning json^tokenize($_text)returns facts of (sentence^tokenize^tokenize):mixedcase- lists all words which have multiple case forms%languagereturns current dictionary language- engine concept
~model_numbermarks words with both alpha and digit in them - command line
buildfiles=xxxxto tell wherefilesxxx.txtare - French, German, Spanish dictionarys and utf8 spellcheck support
version 7.12 -- 1/28/2017 recompile your bot. TOPIC format has changed slightly
- ^jsonreadcvs to read tab-delimited spreadsheet files
- fixed concurrency bug -- CHANGING to VS2015 since source using C++11 no longer compiles in VS2010 and you cant easily get that compiler version any more.
- :trim 11
- Command line parameter manual split off from system concepts and variables
- topic= command line parameter
- renamed cs_botid
- Moved and expanded discussion of multiple bots from advanced manual to new ChatScript Multiple Bots manual
version 7.111 1/15/2017
- fixed major bug in concept reading I introduced in 7.11
version 7.11
- allowing @ and . in user file names at login
- bot: 1 harry -- sets bot fact owner at same time (see $cs_factowner)
- allow bot: command as a line in the filesxxx.txt build file to change bot restrictions from there
version 7.1
- command line parameter apikey for
:translateconcept :translateconceptto use google translate on concepts from english- conditional block comments now supported:
##<<German .....
..
##>>
nobootcommand line param- cyclomatic complexity listed in map file (described in Debugger manual)
- command line parameter
userencryptenables encrypting user topic file ifencrypt=anddecrypt=is set - command line parmater
config=(default is cs_init.txt) - optional
{}around output macro - consolidated all command line parameter descriptions into ChatScript System Variables and Engine-defined Concepts and Parameters
- new manual ChatScript-Foreign-Languages
version 7.01 1/1/2017
- fixing $_variables in topics where changing rules destroys the value assigned
version 7.0
- logsize - bytes for the log buffer to use (see advanced manual)
- outputsize - bytes for main output buffer to use (see advanced manual)
- autoinitfile: username-init.txt at top level (see advanced manual)
- new manual- ChatScript Debugger and corresponding :debug command described within
- @_10 anchor pattern element (see advanced manual)
- ~integer, ~float, ~positiveinteger, ~negativeinteger refine ~number
- RESPONSE_NOCONVERTSPECIAL on $cs_ response or as flag to ^log will block conversion of escaped n,r,t into their ascii counterparts
- conditional compilation per line supported- see advanced manual conditional build
- language= command line param (defaults english) revised DICT/LIVEDATA data access per language-
WARNING: data organization within LIVEDATA has changed. If you are running your own copy, mimic the new structure.
version 6.91
- autodelete and USER_flag1...4 for json
- :trace -userfact
- deleting a json fact will recurse and delete the object referred to UNLESS it has some other reference to it still on another json fact.
- Match(~concept)
- added ^callstack(@1) --- removed ^backtrace()
- $cs_factowner can be assigned a bit value to control what facts you can see
version 6.9 11/20/2016
- ^nth now accepts json object or arrays, returns the factid of the nth member
- command line parameter root=xxxx to tell where CS root directory is
- for ^jsonpath, if you give a field name first without ., CS defaults the dot ^jsonpath(field _obj)
- ^jsonkind($_obj) returns array or object if a json thingy, or fails if not
version 6.87 11/5/2016
- Backtrace() to show calls to get to you
- :trace output ^function --- you can control function tracing bits in detail
- ^pick(jsonarray or jsonboject) returns factid
- xx.verb or xx has fact id
- %restart - can be set and then retrieved across a system restart (:restart)
- can use local vars in function definition: outputmacro: ^x(_myarg)
version 6.86 10/23/2016
- ^delete now always succeeds. For undeletable things like text, it merely ignores it
- JSON_DIRECT_OOB tokencontrol for json that is too large for being a token
- optional 5th param to jsonopen, timeout in seconds for this call (applied 1st to connection, then to transfer) so total max is double
- ^environment(variablename) retrieves environment variable value
- like json object references x[$tmp].y[5] BUT you cannot do assignment into an array for a new index, only on an existing index.
- input tokenizer from user input NO LONGER auto converts "&" into "and"
- ^jsoncopy no longers fails if what you pass is not a json structure, it merely returns what you passed
version 6.85 10-8-2016
- If (^function()) fails if function returns false (as well as previously returning 0 or failing
- @4 = ^jsongather(jsonstructure) - now allowed in addition to ^jsongather(@4 jsonstructure)
- source= command line parameter will start up using that file as input
- ^jsongather(xx xx limit) gets facts thru the limit level deep. 5 :trim xx xx nooob - display outputs without oob data
- x a) use of "" or ^"" sets json literal null
- csmatch_end tell range of where ^match matched
- ^jsonarraydelete(VALUE $array value ALL)
- ^jsonobjectinsert(DUPLICATE t.test.test.test.foo += are now legal 11: :coverage and :showcoverage - the first dumps data on what rules have been output executed so far into /TMP/coverage.txt. The latter displays an abstract of all of your scripts, marking rules that have been executed and those that have not (by omission) 12: ^import and ^export have special behaviors if the name includes the substring "ltm" 13: outputmacros may now be called with factset references as arguments 14: safe as argument to jsonobjectinsert or jsonarraydelete will not recursively delete json content ^jsonarraydelete("safe index" object $key null)
version 6.84 9/25/2016
- supports json path argument with string for key so you can do ^jsonpath(."st. helens".data $$x)
- dotted notation supports x.y.z =
- findtext now also returns $$findtext_word which is what word it was found at
- ^actualinputrange(start end) from ^original data, naming a range of words, what actual words are covered returns range (begin<<16) | end
- ^sleep
- ^originalinputrange(start end) from ^actual data, naming a range of words, what original words generated it returns range (begin<<16) | end
- command line paramter login= (documented in advanced manual)
- ^return(null) now made to be equivalent to ^return() to avoid errors
- ^jsonopen(direct - returns the read text directly to the answer, rather than converting to json facts
- %pid - process id
- encryption, encrypt= decrypt= command line parameter (documented in clients and servers manual under encryption)
- :time (performance measurement) documented in debugging manual
- bootcmd= command line parameter executed before CSBOOT is run (if it is run) (documented in advanced manual)
version 6.83 9/11/2016
- ^extract now also takes signed arguments to perform relative or backwards extractions, eg (source 5 -2) to extract 2 characters ending at position 5 (source -5 -1) from end, start 5 characters before and get 1 character before, i.e. the 6th char from end
- $cs_usermessagelimit sets max user/bot message saves. range 0...20
- $var.key
- clarify ^all = 1 and such assignments to function variables
- Full wiki documentation up-to-date, with HTMLDocumentation folder corresponding. I have not proofread the wiki or html, so it may have minor glitches still. PDFDocumentation not generated from Wiki yet (manually updated). 7. boottrace param to request trace over a startup boot loading of data 8. proofread of all documentation
version 6.8a 8/27/2016
- :trace full renamed :trace always, merely allows you to pass thru ^notrace but you can still choose bits you are tracing
- mongo support for filesystem changed...
- ^authorized() allows a script to test for authorization of current id just as debug commands do
- Giorgio Robino has transcribed 1st half of the CS documentation into wiki format in directory WIKI. In the future I will update it and remaining documents as I ongoingly revise documents. So currently wiki matches 6.8 Renamed DOCUMENTATION to PDFDOCUMENTATION
version 6.8 8-13-2016
- JsonParse allows optional argument before the data of NOFAIL - will return null without error if something is wrong
- ^jsonpath can end a path with , which means return fact id rather than object of fact. EG ^jsonpath(.value id)
- full local variables in topics and outputmacros, $_xxx (see Advanced manual- Local Variables)
version 6.7b 8-5-2016
USER TOPIC FILE FORMAT now detects the old format again, and accepts it, along with newer format.
- %zulutime - format: 2016-07-27T11:38:35.0Z
- documented :trace factcreate x y z in debugging manual to trace specific fact creations
version 6.7a 7-31-2016
- ^'xxxxx' -- active json string. Advanced manual.
- postgres user storage name now includes USERS/ and .txt at end
- renamed %http_response to %httpresponse. Json manual
- Mongo DB now supported. Mongo manual
- param nosuchbotrestart to force server restart if bot not recognized. Advanced Manual or Server manual 6 ^layer(word) tells you when word entered into the dictionary. System functions manual
- no longer building linux postres # version as part of standard. You can build it or mongo as needed.
version 6.62 7-24-2016
WARNING- USER TOPIC FILE FORMAT CHANGED, old ones will self destruct and clear to empty 1 :restart can take a 1st argument of "erase" which means system should erase topic file of current user (changing systems) and it can take up to 4 replacement command line parameters 2. ^jsonlabel(label) 3. ^jsonundecodeString(field) 4. $cs_externaltag ^setoriginal, ^setcanon, ^settag, ^setrole
version 6.61 7-17-2016
- jsonobjectinsert will delete old value if exists, then insert replacement.
- ^jsonarraysize is now deprecated in favor of ^length - you get nonfatal warning messages
- ^jsondelete is now deprectated in favor of ^delete - you get nonfatal warning messages
version 6.6 7-4-2016
- ^matches - returns string of word indices detected by a match
- :trace $var
- DO_SPLIT_UNDERSCORES
- LEAVE_QUOTE documented from $cs_token
- ^wordinconcept(wordreference ~concept)
- ^conceptlist returns facts whose third argument is now start<<8 + end (range rather than just start)
- MARK_LOWER tokenflag
- ^clearcontext()
version 6.5b 6-11-2016
- ^serialize(@set) ^deserialize(string) convert factset to a string and back out again.
- ^query can now also directly return a field value from a match by naming field on the TO argument
3: :restart now accepts up to 4 commandline parameters 4. ^savesentence(label) and ^restoresentence(label) will save and restore an entire sentence preparation, so you can jump back and forth between sentences in pattern matching w/o real cost.
version 6.5a 5-18-2016
- ChatScript now enforces a rule that a function variable name should not be the name of an existing function (hides the function). This may cause your builds to break until you rename your variables in question.
- :trace full -- when set, disables NOTRACE() so everything is traced using all flags :trace ignorenotrace just turns on the flag, leaving your other bits intact :trace none turns off all bits and any ignorenotrace flag
- PRIVATE_CODE now requires PrivateInit() and PrivateRestart() and PrivateShutdown() functions and file privatetestingtable.cpp for any :test overrides, a command line paramemter private= passes its value thru to PrivateInit
- ResponseRuleID(-1) does all to date
version 6.5 -- 5-7-2016 WARNING- change of directory structure in TOPIC
-
TOPIC now gets subdirectories for each of the build layers. While it will work with content in the old format (all at top level) or the new format (subdivided into BUILD0 and BUILD1 subdirectories, it will only :build into the new format. If you have deployment scripts, make sure when they perform builds that CS can create these subdirectories.
-
when using pattern- u: ($$test?) which would see if word was found in sentence, if it is a quoted string "buy me" it will be able to find that sequence as matching.
-
^jsonarraydelete([INDEX,VALUE] array index) to remove element and renumber later ones down
-
while !not in pattern checks that not doesnt appear later in the sentence, !!not checks that it is not the next word
-
:trace RULEFLOW will just show the rules as it does their outputs. It is a terse flow of control view.
version 6.4 4/30/2016
- ^importfacts may have null as its set value. It wont store the facts created in a factset.
- ^conceptlist takes optional 3rd arg, prefix to filter by
- ^words(word) get all dictionary entries with this spelling, upper and lower case, spaces vs underscores
- #define DISCARDDATABASE renamed to DISCARDPOSTGRES
- ^dbinit(EXISTS ...) will return normally when db is already open
- :restart autocloses a postgres db
- ^CSBOOT will now print its results to console and if a server, to server log
- ^CSSHUTDOWN added for system going down behaviors
version 6.3a 4/16/2016
- jsonarrayinsert allows a leading flag UNIQUE, in which case it does not add to array if already there.
- ^notrace(... ) turns off regular tracing for the given stream. Explicit function and topic traces are not blocked, just normal :trace xxdx
- $cs_jsontimeout sets json wait delay (300 second default)
- save/restore local variables allow you to avoid naming collisions -- see advanced manual outputmacros: e.g. outputmacro: ^myfunc(^arg1) (tmp1) code the values of tmp1 are saved and restored across the call, so the macro may safely write on them.
- ^return(...) see advanced manual outputmacros:
version 6.3 4/10/2016
- ~twitter_name detected as concept for @xxx names and ~hashtag_label detected as concept
- cs_afterreset if, assigned to functions, will execute them before and after a :reset. This is your chance to pass some information across to the newly reinited user. I store data in _match variables before and retrieve them after.
- Outputmacros can be declared as executable javascript code. New manual in Esoterica for that.
version 6.2g 3/27/2016
- fixed slowdown introduced into the engine a few versions ago.
version 6.2f 3/25/2016
- ^jsonparse now accepts a flag argument of SAFE, which means you can use it against data the extends beyond the minimal, meaning if you memorize OOB data after [, you dont have to care to find the closing ], which will be hard since JSON itself has ] in it. Eg u: ( [ _* ) $$jsonfacts ^jsonparse(safe _0)
- support for spanish spellchecking
version 6.2e 3/20/2016
version 6.2d 3/14/2016
- ^substitute 1st arg can now be "insensitive", meaning character search and case insensivive. Or you can provide a string like "word insensitive" to pass 2 arguments.
- %originalSentence will give you the raw user input for the current sentence (after tokenization)
- ^original(_0) will give you the original text of the user that this match derives from (see docs for more details)
version 6.2c 3/5/2016
- You no longer have to backslash [ in an active string. You can do ^"[$count]" with impunity. That means that using [] [] notation to designate a choice of text is no longer effective inside an active string"
- ^Next(loop) will skip the rest of code in a loop and begin the next interation (NO MATTER how far up the call chain the loop actually is)
- CS can now be run old-style (all executables at top level) or within BINARIES
- %host gives you the name of the currently running host.
- ^pos(verb be present/past XXX) optional 4th arg to verb form, names pronoun or noun used, so better handles irregular verbs
- $cs_language, if set to spanish, alters spellchecking for spanish
version 6.2b 2/24/2016
- Moved executables and DLLS to folder BINARIES. You must now run CS from there rather than top level. CS changes current working directory up 1 level after starting. Revise Cron jobs and shortcuts to the exe appropriately.
version 6.2a 2/20/2016
- ^norejoinder() makes this rule unable to set its rejoinder.
- CS now allows multiple forms of uppercase words, e.g., ID and Id
- Recently a major security hole in glibc, open source c library was announced and patched. CS uses glibc. This build uses the new version. If you are running older versions of CS, there is some security risk and you are advised to upgrade to this executable linux version, or apply sudo yum update to glibc (or equivalent commands) and then rebuild your existing sources.
- optional 3rd argument to ^jsonpath(xx yy safe) tells it to return ugly data with doublequotes around it. Things with embedded json data or whitespace need to be passed into jsonformat using safe data.
version 6.2 2/14/2016
- documented existing assignment abilities: @3 = @2 @3 -= @2 @3 += @2 @3 = factid @3 -= $$factid
- new command line parameter timer=15000x10 to control how long a volley can last before being abandoned by time. 1st number is millisecond limit, 2nd is a checking frequency (reducing load of getting the time frequently)
- %maxmatchvariables and %maxfactsets given the highest legal number for those respective things
- UNLIKELY INCOMPATIBLE CHANGE: previously if you used match variables inside a nested pattern component, e.g., u: ( _this ( my _*1 ) ) it would be discarded on return to the top level. THEREFORE except in unusual cases, you would not have nested match requests. NOW... they are not discarded. If the above matches, _0 and _1 are both defined. Same for u: (this _(my _{often} dog)) which sets 3 match variables
version 6.1d 2/7/2016
- new command line parameter debug= allows you to execute a :debug command on bootup and then exit. eg. "debug=:trim USERS 4"
- IF tests can now be made of a std rule pattern (including memorization etc) using form if (pattern ....) {} which means you can match input and even memorize during the if test
version 6.1c 2/2/2016
- ^sequence added, similar to refine, except instead of only executing one rule, executes all matching rules.
- Added :common word1 word2 to tell you the concepts they both particpate in, closest first.
- cs_bot and cs_login with script errors if you use the older names.
- added internal ~timewords as an enumerated concept as well.
version 6.1b 1/25/2016
- variables owned by the bot can be defined (always resident unchanged accessable to all users) - see Advanced Variables in advanced manual
- $cs_trace enables and tracks traces by user
- right hand side of a comparison in a pattern may now be a double-quoted string, looks at the inside of the quotes
version 6.1a 1/21/2016
version 6.1 1/17/2016
- concept from ontology concepts: ~daynumber renamed to ~dayindex so as not to collide with engine concept.
- ~common7 redacted
- ^load(name) to dynamically load a layer of topics (analogous to layers 0 and 1 that load on startup)
version 6.01a 1-9-2016
- DICT/BASIC has a small dictionary of words thru grade 6, suitable for use on mobile devices seeking to minimize CS memory use. See end of Finalizing a bot: Mobile size issues
version 6.01 1-7-2016
- easier to follow output tracing
- jsonopen now supports PUT as a type (with arguments just like POST)
- ^length now accepts the name of a json object or array, and returns the number of elements it has
- ^match can take a rule tag instead of a pattern, using the pattern of that rule.
version 6.0 1-02-2016
- easier to understand pattern tracing
- ^print accepts more flags (RESPONSE_ ) controlling output
- %timenumbers for a complete second minute hour dayinweek dateinmonth month year data
version 5.93 12-31-2015
- New manual "ChatScript Common Beginner Mistakes"
- time.tbl file removed from worlddata, its 2 concepts merged into ontology concepts, whose order of data has changed concept: ~month_names (Apr April Aug August Dec December Feb February Jan January Jul July Jun June Mar March May may Nov November Oct October Sep Sept September ) concept: ~month_names_index DUPLICATE (3 3 7 7 11 11 1 1 0 0 6 6 5 5 2 2 4 4 10 10 9 9 8 8 8 ) concept: ~daysinmonth DUPLICATE (30 30 31 31 31 31 28 28 31 31 31 31 30 30 31 31 30 30 30 30 31 31 30 30 30) # 0-based concept: ~month_proper_names DUPLICATE (April April August August Decemeber December February February January January July July June June March March May May November November October October September September September )
- :trace none now also turns off all topic and macro tracing
- $cs_utcoffset now accepts time notation as well, like -02:30 to adjust 2.5 hours before utc.
- :trace notthis ~topic will suppress tracing in this topic AND below it
version 5.92 12-27-2015
- Jsondelete now only takes 1 argument, name of json composite to delete
- :prepare now takes optional initial argument NOPREPASS to avoid using prepass topic
version 5.91 12-23-2015
- all debug commands have a 2character abbreviation of 1st and last letter (those that conflict tie goes to the the first in the table).
- src directory renamed SRC (must use new executables which have correct directory case in LINUX)
- ~email_url split off from ~web_url and recognized by the engine
- add ^jsoncopy( jsonref) to duplicate a json fact structure given its name
- ^jsonparse now accepts extended object references that get or dereference existing json structures
- %originalinput gives the original volley input
- new manual ChatScript System Variables & Engine-defined concepts split off from various manuals.
- the json argument "unique" has been deprecated. it is no longer needed.
- PRIVATE_CODE define supports you appending code to functionexecute.cpp w/o changing engine source. See new manual INSTALLING AND UPDATING CHATSCRIPT
version 5.9 12-14-2015
- renamed ~verbs to ~verblist, ~prepositions to ~prepositionlist, ~adverbs to ~adverblist and ~adjectives to ~adjectivelist - these lists are not from the pos-tagger and should not be used in scripts. They are aggregation data about what is in the corresponding files in ONTOLOGY.
- :show newline forces newlines to remain in the log file for respond: and start: lines.
- renamed ^jsonprint to ^jsontree so you can remember it vs ^jsonwrite 4 ^jsonformat( textstring) takes a json string and writes it so that all keys have double quotes around them. So you can build a json string from a CS format string w/o having to have (and escape) quotes around the field names
- new system variable %http_response returns most recent response code from libcurl (for ^jsonopen)
- optional 1st argument to ^jsonopen, ^jsonparse, ^jsoncreate, ^jsonobjectinsert, ^jsonarrayinsert is word "permanent" to tell the facts to not be transient and "unique" to make the facts unique across volleys.
- ^decodeinputtoken(number) given %token or $cs_token will give english values for the enabled bits.
- Added writeup just after OutputMacros in advanced manual, comparing them and ^reuse().
- added ^jsonarraysize(string) to count how many elements are in the given json array name.
- added discussion of using complex headers to JsonOpen
version 5.8f 12/10/2015
- Jsonprint takes optional 2nd argument depth to print to
- optional first argument to :reset makes it safe to call from inside a script
version 5.8e 12/5/2015
- removed ^setposition(value). Now you must use ^setposition(_var start end) you can use @_x+ to create an equivalent effect.
version 5.8d 11/29/2015
1 ^undelete can take a field restriction like ^undelete(@0object) which insures that the fact and/or the object is unique
version 5.8c 11/28/2015
- improved :testpattern trace
version 5.8b 11/26/2015
version 5.8a 11/22/2015
- :build option NOSUBSTITUTION will disable warning you about various substitutions.
- Sample comment can now include F to indicate the pattern is NOT supposed to match
- $cs_utcoffset is hours from utc, %time returns current time in that timezone
- ^timefromseconds takes optional second argument, timezone (hour) displacement (+ or -)
version 5.8 11/13/2015
- ^jsongather(set jsonid) takes the facts involved in the json structure named by jsonid and stores them in the factset set.
- ^jsonparse and ^jsonopen take optional 1st argument "UNIQUE" allowing array and object naming to be unique based on volleyCount
- $cs_looplimit, if defined, will replace the default 1000 value limit on how many iterations of a loop the system will stop at to protect against runaway loops
- Findtext will now substitute _ to space in source and target before matching, to provide matching either notation.
- ^canon(word canonical) is analogous to :canon word canonical, and only works during :build. Used for table control over setting canonicals.
- ^jsondelete(factset jsonfact) will delete the fact and all facts referred to by it and if the fact is an array fact, will renumber all later array value facts down 1.
- ^jsonobjectinsert( object key value) inserts key and value into object named
- ^jsonarrayinsert(array value) adds value to end of array 9 ^jsoncreate({object array}) creates an empty json composite. 10 New CS manual ChatScript JSON
version 5.72d 10/24/2015
1 ^conceptlist fixed (bad edit destroyed the name)
version 5.72c 10/23/2015
- :build will ignore files ending in .bak and ~
version 5.72b 10/18/2015
- OUTPUT_NOSTORE renamed OUTPUT_RETURNVALUE_ONLY
version 5.72 10/11/2015
- new ^print flags: OUTPUT_RAW - does not try to interpret " or [ or { or ( OUTPUT_NOSTORE - does NOT save the answer, but instead just returns it.
- ^JSONWRITE(id) given json facts referred to by the root "id", creates the corresponding JSON string sans any line feeds
- new manual ChatScript Engine Manual (in esoterica)
- Harry (in topic keywordless) now can illustrate Json calls by calling wikipedia for an extract if you say: "what is a root"
- documented that \ can escape an entire token in patterns, not just a character. hence ( \test=5 ) means the entire token test=5 and not a comparison of test with 5
- No longer providing 32bit LINUX # version executables. You need to build them yourself. Or tell me you want it. if there is enough demand, I will continue them.
version 5.7 9/27/2015
- ^define takes a second argument of "all" or a third argument of "all" to display all meanings or of a particular sort.
- user flags on facts extended to 8 from 4 and JSON_xxx fact flags named as well. FACTS manual advanced section now documents a bunch of fact flags.
- :trace JSON added
- JSONOPEN & JSONPRINT & JSONPARSE & JSONPATH provide support for internet JSON access
version 5.61B 9/16/2015
- added optional argument ("trace") to build to trace the rules it compiles so you can see where it last succeeded before dying... :build harry trace
- ^cs_topic_enter(^topic ^mode) and ^cs_topic_exit(^topic ^result) allow you to intercept calls to do a topic.
version 5.6 8/28/2015
- changed LIVEDATA path to be the unchanged path for initsystem embedded CS users.
version 5.54 8/24/2015
- new tokencontrol value UNTOUCHED_INPUT. if set to exactly that, the system will tokenize based on spaces only. 2 :tracedfunctions List all user defined macros currently being traced
- :tracedtopics List all topics currently being traced
version 5.53a 8/6/2015
- ^respond now takes multiple arguments to try in order (similar to the new ^gambit)
version 5.53
- in debugging manual documented all the individual :trace options
version 5.52
- filesxxx.txt files hunt order now includes RAWDATA folder.
- Gambit now takes a series of things to try in order (up to 15) with FAIL as a final legal choice. WARNING: Back at the beginning of CS 5.xxx ^gambit(PENDING) changed meaning to no longer include the current topic. But this can be "recreated" by doing ^GAMBIT(~ PENDING) ^gambit(~ PENDING ~mygeneral) will do current topic, if no gambit then PENDING topics, if no gambit then ~mygeneral topic.
- new command line parameter authorize=" ... " to supplement authorizations system for debug commands 4 new command line parameter nodebug disables user issued debug commands
- documented existing command line parameters build0= and build1= which do command line builds
version 5.51
- speech input/ouput in WEBINTERFACE (for chrome/safari)
- GetRule(x y) takes 0 as y, meaning the top level rule above us. 3: :verify takes optional 1st param a variable indicating what tokencontrol value to use.
version 5.5
- new script marker - describe: var or an _var or an @set or a ^macro or ~topic and a text string and saves that as documentation. See :list
- :list {$ ^ ~ _ @} will list documented items (and undocumented variables). See Finalizing a bot 3: ^sort now takes optional first argument alpha or alphabetic meaning sort by name instead of value. Also takes instead "age" meaning put oldest facts first.
- loop (@2) now uses count of set as loop control. Previously you could also use @2 to represent a count in patterns and IF tests.
- :prepare now takes optional first argument, a user variable to set the tokencontrol to.
- You can now control what tracing is done within a topic. :trace ~topicname takes the current trace flags, uses them for that topic, and sets trace to 0. Therefore: :trace basic match ~topicname all will set ~topicname to do those 2 kinds of traces and turn off regular trace, then turn on regular trace for everything else
- :trace input adds current input to the trace 7: removed the comment in a concept definition (use describe: instead).
- concept definitions can now be annotated with ONLY_NOUNS or ONLY_VERBS or ONLY_ADJECTIVES or ONLY_ADVERBS. This requires that only the corresponding interpretation of words can match, both in this set and in ALL concepts recursively referred to by this set. It is similar to marking a concept with NOUN but doesn't actually change any existing property bits, merely requires them if the pos tagger can determine. ONLY_NONE added to a concept blocks any propogate thru it
version 5.4 (extra stable)
- serious bugs with << and %tense fixed
- optional first flag to createfacts STRIP_QUOTES to remove quotes from arguments
- userbugs table in postgres user client to record CS detected bugs
version 5.33
- loebner.exe updated to current system
- WriteFact(factindex) will dump the fact to text. eg